06 spring重构三层结构



使用spring来管理三层结构中的对象及其依赖关系

1 使用bean标签重构

    <!-- 1 创建userDao对象 -->
	<bean id="userDao" class="com.bjsxt.dao.impl.UserDaoImpl"></bean>
	
    <!-- 2 创建userService对象 -->
	<bean id="userService" class="com.bjsxt.service.impl.UserServiceImpl">
		<!-- 给service注入dao对象 -->
		<property name="userDao" ref="userDao"></property>
	</bean>

	<!-- 3 创建userAction对象 -->
	<bean id="userAction" class="com.bjsxt.action.UserAction">
		<!-- 给Action注入service对象 -->
		<property name="userService" ref="userService"></property>
	</bean>

2 使用bean的自动装配

	<!-- 1 创建userDao对象 -->
	<bean id="userDao" class="com.bjsxt.dao.impl.UserDaoImpl"></bean>

	<!-- 2 创建userService对象 -->
	<bean id="userService" class="com.bjsxt.service.impl.UserServiceImpl" autowire="byType"></bean>

	<!-- 3 创建userAction对象 -->
	<bean id="userAction" class="com.bjsxt.action.UserAction" autowire="byType"></bean>

3 使用注解的方式重构三层结构

IOC/DI 完成对象的解耦合

3.1 开启组件扫描

<?xml version="1.0" encoding="UTF-8"?>
<!-- 导入约束xsd -->
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
	http://www.springframework.org/schema/beans/spring-beans.xsd
	http://www.springframework.org/schema/context
	http://www.springframework.org/schema/context/spring-context.xsd">
	 <!-- 
        注意添加约束context
	 	开启spring的组件扫描
	 	base-package:指定扫描哪些package,多个package之间使用逗号隔开
	  -->
	 <context:component-scan base-package="com.bjsxt.dao.impl,
	 	com.bjsxt.service.impl,
	 	com.bjsxt.action">
	 
	 </context:component-scan>
	
</beans>

3.2 在需要被纳入容器的类上加注解

将加了注解的类,纳入到spring容器中,进行实例化(可以有选择的处理,不用将包内的所有类都纳入spring容器中)

@Repository:加入dao层,将dao实现类纳入到spring容器中

@Service:加入service层,将service实现类纳入到spring容器中

@Controller :加入web层,将Action纳入spring容器中

3.3 给需要注入的属性加注解

@Autowired:建立起对象之间的依赖关系

3.4 执行流程

  • 当加载spring容器的时候,根据xml文件的配置,自动扫描指定的package,将指定包中,被加了注解的类,纳入spring容器中,进行实例化
  • <bean id=”” class=””></bean>,bean标签的id属性默认是类名首字母小写,可以自己指定id,给类的响应注解加参数(“xxx”),不过不推荐
  •  给纳入spring容器中的对象的添加了@Autowired的属性,完成自动装配,默认:autowire=byType







posted @ 2017-09-21 12:14  青枫居士  阅读(578)  评论(0编辑  收藏  举报