电商项目第二天

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

注意:全局设置中,关闭检查需要在不注册时单独关闭。

特此鸣谢 晓欣老师!
欢迎交流

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值