大纲
使用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”),不过不推荐