SOA是大型项目的架构,每个项目之间存在依赖关系,项目中的配置文件也因为这种依赖关系相互加载或被加载
例如下面这个大型项目:(各个项目之间的依赖关系如下)
common中的配置文件
/resources/spring/applicationContext-dubbox.xml
<!-- 加载properties文件-->
<context:property-placeholder location="classpath*:properties/*.properties" />
<!-- 配置连接zookeeper的地址(IP+端口)-->
<dubbo:registry protocol="zookeeper" address="${address}"/>
/resources/properties/dubbox.properties
address=192.168.200.128:2181
<param-value>classpath*:spring/applicationContext*.xml</param-value>
classpath和classpath区别:
classpath: 加载本项目下的指定目录的配置文件
classpath: 加载本项目下和本项目所依赖的所有项目的指定目录下的配置文件
dao中的配置文件
/resources/spring/applicationContext-dao.xml
<!-- 加载properties文件 -->
<context:property-placeholder location="classpath*:properties/*.properties" />
<!-- 配置数据源 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
destroy-method="close">
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="driverClassName" value="${jdbc.driver}" />
<property name="maxActive" value="10" />
<property name="minIdle" value="5" />
</bean>
<!-- 配置mybatis工厂 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- 加载SqlMapConfig文件 -->
<property name="configLocation" value="classpath:mybatis/SqlMapConfig.xml" />
</bean>
<!-- 包扫描,sql映射文件和接口文件要在同一个包下-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="cn.itcast.core.dao" />
</bean>
/resources/properties/db.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/pyg?characterEncoding=utf-8
jdbc.username=root
jdbc.password=admin
/resources/mybatis/SqlMapConfig.xml
<configuration>
<plugins>
<!-- com.github.pagehelper 为 PageHelper 类所在包名 -->
<plugin interceptor="com.github.pagehelper.PageHelper">
<!-- 设置数据库类型 Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL 六种数据库-->
<property name="dialect" value="mysql"/>
</plugin>
</plugins>
</configuration>
service中的配置文件
web.xml
<!-- 加载spring容器 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:spring/applicationContext*.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
/resources/spring/applicationContext-service.xml
<!-- 配置dubbo对外提供服务的端口号,给controller调用-->
<dubbo:protocol name="dubbo" port="20881"></dubbo:protocol>
<!-- 给当前服务起个名 -->
<dubbo:application name="pinyougou-sellergoods-service"/>
<!-- 配置包扫描, 在这个包下面的service实现类上写@service注解才会生效 -->
<dubbo:annotation package="cn.itcast.core.service" />
web中的配置文件
web.xml
<!-- 解决post乱码 -->
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- springMvc前端控制器 -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 指定加载的配置文件,使用classpath-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/springmvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
/resources/spring/springmvc.xml
扫描二维码关注公众号,回复:
9401586 查看本文章
<!-- 注解驱动 -->
<mvc:annotation-driven>
<!-- 转换器 -->
<mvc:message-converters register-defaults="true">
<!--方便将对象转换Json格式数据 -->
<bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
<property name="supportedMediaTypes" value="application/json"/>
<property name="features">
<array>
<value>WriteMapNullValue</value>
<value>WriteDateUseDateFormat</value>
</array>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
<!-- 给当前服务起个名 -->
<dubbo:application name="pinyougou-manager-web" />
<!-- 配置连接zookeeper地址 -->
<dubbo:registry address="zookeeper://192.168.200.128:2181"/>
<!-- 包扫描, 只有在这个包下面才可以用阿里的@Reference注解注入service -->
<dubbo:annotation package="cn.itcast.core.controller" />
<!-- 超时全局设置 10分钟 check=false不检查服务提供方-->
<dubbo:consumer timeout="600000" check="false"/>
将所有项目的配置文件串起来
- web项目启动首先加载web.xml
- service项目的web.xml先加载spring容器,监听器用classpath加载所有application的配置文件,也就是成功加载了dao、数据库和dubbo、zookeeper连接地址等;
- web项目的web.xml加载springmvc前端控制器,再加载指定springmvc配置文件,springmvc.xml中配置 注解驱动和dubbo服务、zookeeper连接地址