整合Spring+Mybatis
1.配置业务层的web.xml,主要配置监听器,加载上下文配置文件
//配置上下文配置文件
<context-param>
<params-name>ContextConfigLocation</params-name>
<params-value>classpath:application-context.xml</params-value>
</context-param>
//监听器 加载上下文配置文件
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
2.创建application-context.xml文件,为了方便开发,将所有配置文件放入与application-context.xml文件同级目录下的config文件夹下,并在application-context.xml文件中引入config下的所有配置文件,例如扫描、事务、数据源等。
// 数据源 、事务、扫描、Mybatis、ActiveMQ、Feemarker、Redis、Solr
<import resource="config/*.xml"/>
3.配置数据源jdbc.xml 和读取数据源信息property.xml,数据源配置时,使用动态获取的方式。
jdbc.xml
// 数据源 本次项目使用的是阿里巴巴的druid连接池
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" >
<property name="driverClassName" value="${driverClassName}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</bean>
property.xml
//使用<context:property-placeholder/>的底层实现类,完成多个配置文件的引入
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" >
<property name="locations">
<list>
<value>classpath:jdbc.properties</value>
</list>
</property>
</bean>
4.扫描包,将所有包作为Bean处理,放入spring容器,可是直接使用@Autowired进行注入
//扫描
<context:component-scan base-package="com.chinasofti" />
5.事务配置,管理数据源,并开启注解,扫面@Transactional
//事务 管理数据源
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager" >
<property name="dataSource" ref="dataSource" />
</bean>
//开启注解 tx:annotation-driven 指开启事务注解
<tx:annotation-driven transaction-manager="transactionManager" />
6.配置SessionFactory 工厂
<bean class="org.mybatis.spring.SqlSessionFactoryBean" >
<!-- 数据源 -->
<property name="dataSource" ref="dataSource" />
<!-- 配置Mybatis-config核心配置文件 -->
<property name="configLocation" value="classpath:mybatis-config.xml" />
</bean>
<!-- 扫描Mapper文件 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer" >
<!-- 省略了注入sqlSessionFactory mapper扫描可以自动注入 -->
<property name="basePackage" value="扫描的包" />
</bean>
mybatis-config.xml 放在config外,避免重复读取
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 二级缓存 setting 延迟加载 -->
<!-- 别名 -->
<typeAliases>
<package name="com.chinasofti.core.bean"/>
</typeAliases>
<!-- Mapper位置 -->
</configuration>
整合SpringMVC
1.配置控制层web.xml
<!-- 前端控制器 -->
<servlet>
<servlet-name>console</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- DispatcherServlet读取配置文件 找到三个基本点 -->
<!-- 默认找WEB-INF/[servlet的名称]-servlet.xml -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-console.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>console</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
2.配置springmvc-console.xml
<!-- 扫描所有包 扫描@Controller 自带装配 -->
<context:component-scan base-package="com.chinasofti"/>
<!-- 处理器 映射器 适配器 -->
<mvc:annotation-driven/>
<bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
<property name="prefix" value="/WEB-INF/console/" />
<property name="suffix" value=".jsp" />
</bean>
整合Dubbo
1.dubbo的原理
建立服务提供方和服务消费方,并使用zookeeper作为注册中心
2.dubbo-provider.xml 服务提供方
<!-- Dubbo提供方 -->
<!-- 1.名称 用于计算机 的区别 唯一 -->
<dubbo:application name=""/>
<!-- 2.设置注册中心 zookeeper的地址在哪里 地址 协议 连接多台服务器时,用逗号将adress隔开 -->
<dubbo:registry address="192.168.200.128:2181" protocol="zookeeper" />
<!-- 3.dubbo://192.168.39.80:20880 默认 设置端口号 -->
<dubbo:protocol port="20880" name="dubbo" />
<!-- 4.暴露实现类 -->
<dubbo:service interface="com.chinasofti.core.service.TestTbService" ref="testTbService" />
3.dubbo-consumer.xml 服务消费方,注意!
消费方的web.xml文件只读取了springmvc-console.xml
需要将消费方引入
<!-- Dubbo消费方 -->
<!-- 1.名称 用于计算机 的区别 唯一 -->
<dubbo:application name=""/>
<!-- 2.消费方,不需要端口号dubbo://192.168.39.80:20880 默认 设置端口号 -->
<dubbo:protocol port="20880" name="dubbo" />
<!-- 3.调用此接口对应的实现类 根据id实现自动注入 -->
<dubbo:reference interface="com.chinasofti.core.service.TestTbService" id="testTbService"
/>
Dubbo优化
进行服务器之间请求直连
1.设置连接超时时间
2.直接连接
3.不检查(由于dubbo本身在启用时,存在一种检查机制,在使用直连时,需要关闭)
dubbo-private.xml
<!-- Dubbo提供方 -->
<!-- 1.名称 用于计算机 的区别 唯一 -->
<dubbo:application name=""/>
<!-- 2.设置注册中心 zookeeper的地址在哪里 地址 协议 连接多台服务器时,用逗号将adress隔开 -->
<!-- <dubbo:registry address="192.168.200.128:2181" protocol="zookeeper" /> -->
<dubbo:registry address="N/A"/><!-- 不注册 直连第一步,服务提供方不注册zookeeper -->
<!-- 3.dubbo://192.168.39.80:20880 默认 设置端口号 -->
<dubbo:protocol port="20880" name="dubbo" />
<!-- 4.暴露实现类 -->
<dubbo:service interface="com.chinasofti.core.service.TestTbService" ref="testTbService" />
dubbo-consumer.xml
<!-- Dubbo消费方 -->
<!-- 1.名称 用于计算机 的区别 唯一 -->
<dubbo:application name="LRHSport-console"/>
<!-- 2.设置注册中心 zookeeper的地址在哪里 地址 协议 连接多台服务器时,用逗号将adress隔开 -->
<!-- <dubbo:registry address="192.168.200.128:2181" protocol="zookeeper" /> -->
<dubbo:registry address="N/A" check="false" /><!-- 不注册 直连第二步,服务消费方不请求zookeeper -->
<!-- 3.消费方,不需要端口号dubbo://192.168.39.80:20880 默认 设置端口号 -->
<!-- <dubbo:protocol port="20880" name="dubbo" /> -->
<!-- 4.调用此接口对应的实现类 根据id实现自动注入 -->
<dubbo:reference interface="com.chinasofti.core.service.TestTbService" id="testTbService"
url="dubbo://127.0.0.1:20880"
/>
<!-- 全局设置 设置超时时间 关闭检查 -->
<dubbo:consumer timeout="600000" check="false" />
注意:全局设置中,关闭检查需要在不注册时单独关闭。
特此鸣谢 晓欣老师!
欢迎交流