这里是分布式开发,所以web工程和service工程是分开的
一、WEB工程中的配置
1.首先是springmvc文件
配置内容大体有以下:
a.加载自己写的properties文件
<context:property-placeholder
location="classpath:conf/resource.properties" />
b.导入包的依赖
context:component-scan
base-package="com.xiaobai.test.controller" />
<mvc:annotation-driven />
c.配置视图解析器
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
d. 配置资源映射
<mvc:resources location="/css/" mapping="/css/**" />
<mvc:resources location="/js/" mapping="/js/**" />
e.定义文件上传解析器
<!-- 定义文件上传解析器 -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 设定默认编码 -->
<property name="defaultEncoding" value="UTF-8"></property>
<!-- 设定文件上传的最大值5MB,5*1024*1024 -->
<property name="maxUploadSize" value="5242880"></property>
</bean>
f.配置zookeeper注册中心和duboo服务发布
<!-- 引用服务端发布的服务 -->
<!-- 在注册中心的应用的名称 -->
<dubbo:application name="xiaobai-test-web" />
<!-- 配置注册中心的相关信息 -->
<dubbo:registry protocol="zookeeper"
address="192.168.245.128:1999" />
<dubbo:reference
interface="com.xiaobai.service.ItemService" id="itemService" />
<dubbo:reference timeout="8000" //配置超时时间
interface="com.igeek.ebuy.search.service.SearchService"
id="searchService" />
2.然后是log4j日志文件,格式都一样的。
### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.err
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
log4j.rootLogger=info,stdout
3.之后是自己写的配置文件
这里说明一下:自己写的配置文件,在springmvc中配置后,可以用@Value在代码中导入
4.最后是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>
二、Service工程中的配置
1.首先是db.properties文件,配置连接数据库的信息
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/xiaobai?characterEncoding=utf-8
jdbc.username=root
jdbc.password=123456
2.然后是mybatis的SqlMapConfig文件,整合后几乎不需要配置,但是如果要使用分页插件,如pagehelper,需要在这里进行配置。
<plugins>
<!--配置分页插件-->
<plugin interceptor="com.github.pagehelper.PageHelper">
<!-- 设置数据库方言 -->
<property name="dialect" value="mysql" />
</plugin>
</plugins>
3.然后是spring中的applicationContext-dao文件配置,配置连接数据库的配置文件,连接相关、mapper扫描、连接池的bean等。
<!-- 数据库连接池 -->
<!-- 加载配置文件 -->
<context:property-placeholder location="classpath:conf/db.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>
<!-- 让spring管理sqlsessionfactory 使用mybatis和spring整合包中的 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 数据库连接池 -->
<property name="dataSource" ref="dataSource" />
<!-- 加载mybatis的全局配置文件 -->
<property name="configLocation" value="classpath:mybatis/SqlMapConfig.xml" />
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.igeek.ebuy.manager.mapper" />
</bean>
4.然后是spring中的applicationContext-trans文件配置, 配置声明式事务。 事物管理器,事物的传播特性,以及AOP切面等
<!-- 事务管理器 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<!-- 数据源 -->
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 通知 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<!-- 传播行为 -->
<tx:method name="save*" propagation="REQUIRED" />
<tx:method name="insert*" propagation="REQUIRED" />
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="create*" propagation="REQUIRED" />
<tx:method name="delete*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="find*" propagation="SUPPORTS" read-only="true" />
<tx:method name="select*" propagation="SUPPORTS" read-only="true" />
<tx:method name="get*" propagation="SUPPORTS" read-only="true" />
</tx:attributes>
</tx:advice>
<!-- 切面 -->
<aop:config>
<aop:advisor advice-ref="txAdvice"
pointcut="execution(* com.xiaobai.service..*.*(..))" />
</aop:config>
5.spring中的applicationContext-service文件配置,主要配置service的扫描表,zookeeper注册中心,发布dubbo服务等。
<!-- 配置service的扫描包 -->
<context:component-scan
base-package="com.xiaobai.service" />
<!-- 发布dubbo服务 -->
<!-- 配置application名称 -->
<dubbo:application name="ebuy-cart" />
<!-- 配置注册中心的信息 -->
<dubbo:registry protocol="zookeeper"
address="192.168.128.150:2181" />
<!-- 配置dubbo服务以及端口号 -->
<dubbo:protocol name="dubbo" port="20195" />
<!-- 申明需要暴露的服务的接口 -->
<!-- interface:提供的服务的接口
ref:实际提供服务的实现类的对象在spring中的名称
-->
<dubbo:service interface="com.igeek.ebuy.cart.service.CartService"
ref="cartServiceImpl" />
6.如果你使用了redis,spring中的applicationContext-redis文件配置,主要对单机版以及集群版redis进行配置。
<!-- 单机版的 -->
<bean id="jedisPoolClient" class="com.xiaobai.jedis.JedisPoolClient">
<property name="jedisPool" ref="jedisPool"/>
</bean>
<!-- 配置一个jedisPool -->
<bean id="jedisPool" class="redis.clients.jedis.JedisPool">
<constructor-arg name="host" value="192.168.245.128"/>
<constructor-arg name="port" value="6379"/>
</bean>
<!-- 集群版 -->
<!-- <bean id="jedisClusterClient" class="com.xiaobai.jedis.JedisClusterClient">
<property name="cluster" ref="cluster"/>
</bean> -->
<!-- jedisCluster -->
<bean id="cluster" class="redis.clients.jedis.JedisCluster">
<constructor-arg name="nodes">
<set>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.245.128"/>
<constructor-arg name="port" value="7001"/>
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.245.128"/>
<constructor-arg name="port" value="7002"/>
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.245.128"/>
<constructor-arg name="port" value="7003"/>
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.245.128"/>
<constructor-arg name="port" value="7004"/>
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.245.128"/>
<constructor-arg name="port" value="7005"/>
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.245.128"/>
<constructor-arg name="port" value="7006"/>
</bean>
</set>
</constructor-arg>
</bean>
7.如果你使用了solr搜索引擎(搜索应用服务器),spring中的applicationContext-solr文件配置,需要配置solr。
<!-- 单机版solr -->
<bean id="solrServer" class="org.apache.solr.client.solrj.impl.HttpSolrServer">
<constructor-arg name="baseURL" value="http://192.168.245.128:8080/solr/collection1"/>
</bean>
<!-- 集群版solr
<bean id="cloudSolrServer" class="org.apache.solr.client.solrj.impl.CloudSolrServer">
<constructor-arg name="zkHost" value="192.168.245.128:2181,192.168.245.128:2182,192.168.245.128:2183"/>
<property name="defaultCollection" value="collection2"/>
</bean>
-->
8.如果你使用了acctive-MQ消息队列,spring中的applicationContext-activeMQ文件配置,需要配置connectionfactory,而且在生产者和消费者两方,配置也不同,配置如下:
a.生产者(发送者)
<!-- 真正可以产生Connection的ConnectionFactory,由对应的 JMS服务厂商提供 -->
<bean id="targetConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<constructor-arg name="brokerURL" value="tcp://192.168.245.128:61616"/>
</bean>
<!-- Spring用于管理真正的ConnectionFactory的ConnectionFactory -->
<bean id="connectionFactory"
class="org.springframework.jms.connection.SingleConnectionFactory">
<!-- 目标ConnectionFactory对应真实的可以产生JMS Connection的ConnectionFactory -->
<property name="targetConnectionFactory" ref="targetConnectionFactory" />
</bean>
<!-- 配置生产者 -->
<!-- Spring提供的JMS工具类,它可以进行消息发送、接收等 -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<!-- 这个connectionFactory对应的是我们定义的Spring提供的那个ConnectionFactory对象 -->
<property name="connectionFactory" ref="connectionFactory" />
</bean>
<!--这个是队列目的地,点对点的 -->
<bean id="queueDestination" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg>
<value>spring-queue</value>
</constructor-arg>
</bean>
<!--这个是topic目的地,一对多的 -->
<bean id="topicDestination" class="org.apache.activemq.command.ActiveMQTopic">
<constructor-arg index="0" value="spring-topic" />
</bean>
<!--添加需要的队列 -->
<bean id="itemAdd-topicDestination" class="org.apache.activemq.command.ActiveMQTopic">
<constructor-arg index="0" value="itemAdd-topic" />
</bean>
b.消费者(接受者)
<!-- 真正可以产生Connection的ConnectionFactory,由对应的 JMS服务厂商提供 -->
<bean id="targetConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<constructor-arg name="brokerURL" value="tcp://192.168.128.150:61616"/>
</bean>
<!-- Spring用于管理真正的ConnectionFactory的ConnectionFactory -->
<bean id="connectionFactory"
class="org.springframework.jms.connection.SingleConnectionFactory">
<!-- 目标ConnectionFactory对应真实的可以产生JMS Connection的ConnectionFactory -->
<property name="targetConnectionFactory" ref="targetConnectionFactory" />
</bean>
<!--添加商品的队列 -->
<bean id="itemAdd-topicDestination" class="org.apache.activemq.command.ActiveMQTopic">
<constructor-arg index="0" value="itemAdd-topic" />
</bean>
<!-- 配置监听器 -->
<bean id="itemAddListener" class="com.igeek.ebuy.item.listeners.ItemAddListener"/>
<!-- 配置消息监听容器 -->
<bean class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<!-- 服务器连接对象 -->
<property name="connectionFactory" ref="connectionFactory" />
<!-- 消息队列对象 -->
<property name="destination" ref="itemAdd-topicDestination" />
<!-- 消息监听对象 -->
<property name="messageListener" ref="itemAddListener" />
</bean>
9.最后是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>
<!-- 前端控制器 -->
<servlet>
<servlet-name>ebuy-manager</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- contextConfigLocation不是必须的, 如果不配置contextConfigLocation, springmvc的配置文件默认在:WEB-INF/servlet的name+"-servlet.xml" -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>ebuy-manager</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- 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>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
如有不足,请联系补充,看完如果对您有帮助,请给我一个赞!!!爱您!!