关于SOA项目的一些配置文件

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"/>

将所有项目的配置文件串起来

  1. web项目启动首先加载web.xml
  2. service项目的web.xml先加载spring容器,监听器用classpath加载所有application的配置文件,也就是成功加载了dao、数据库和dubbo、zookeeper连接地址等;
  3. web项目的web.xml加载springmvc前端控制器,再加载指定springmvc配置文件,springmvc.xml中配置 注解驱动和dubbo服务、zookeeper连接地址
发布了33 篇原创文章 · 获赞 2 · 访问量 965

猜你喜欢

转载自blog.csdn.net/Rhin0cer0s/article/details/103277818