Spring学习总结 —— IoC/DI
2014-07-17 13:15
357 查看
Spring学习总结 —— IoC/DI
IoC:控制反转又称依赖注入(DI),其作用是降依类与类之间的耦合
IoC实现的几种方式属性注入 : 通过setter方法给属性设值
[b]① 创建bean类 并 声明 bean[/b]
[b]②[/b][/b][b]在需要注入的类中定义 属性 并至少 给出 setter方法[/b]
③在xml中进行注入
构造注入 : 通过带参构造方法给属性设值
①创建要注入的bean类 , 并在配置文件中声明bean对象
②创建要被注入的类 并给出 所需的 构造器
③在配置文件中进行注入
反射注入 : 通过反射的方式给属性设值
[b]① 声明Bean : Spring的IoC组件[/b]@Repository[/b]:持久层组件,用于标注数据访问层组件,如DAO层组件。
@Service[/b]:服务成组件,用于标注业务层组件,如Service层组件;会根据Bean的类型实例化一个首字母为小写的bean的实例,如果要修改bean name可以在@Service("custome beanName")。
@Controller[/b]:用于标注控制层主键,如Strust的Action层组件。
@Component[/b]:泛指组件,当组件不好归类的时候可以用这个标注。
@Resource:是通过"byType"的方式对Bean属性进行自动注入的,如果Bean属性的类型有多个,那么就用@Resource("beanName") ,@Resource("beanName") 是通过"byName"的方式对Bean属性进行自动注入的。
接口注入 : 在spring中被废弃,ejb中有用
Spring 对Bean的四种自动装配(注入)方式autowire= "byName" :通过Bean的名字对属性进行值注入
autowire="byType":通过属性的类型来对属性进行值注入。<慎用>
autowire="constructor":通过构造器来对属性进行值注入。<慎用>
autowire="autodetect":容器自动对属性进行值注入,先用constructor的方式,如果没有构造器,再用byType的方式。<尽量不用>
Spring Bean的应用范围scope="singleton"[/b]:单例(默认),对所有应用都只生成一个实例
scope="prototype"[/b]:对每个应用都生成一个实例
scope="request"[/b]:在web应用中有效,对每个请求都生成一个实例
scope="session"[/b]:在web应用中有效,对每个会话都生成一个实例
scope="global-session"[/b]:在web应用中有效,全局Http会话
IoC:控制反转又称依赖注入(DI),其作用是降依类与类之间的耦合
IoC实现的几种方式属性注入 : 通过setter方法给属性设值
[b]① 创建bean类 并 声明 bean[/b]
//省去 bean类创建 //定义一个名 为 userDao的bean <bean name="userDao" class="cn.jbit.demo.dao.impl.UserDaoImpl" />注意: 用这种方式必须要给出无参数构造
[b]②[/b][/b][b]在需要注入的类中定义 属性 并至少 给出 setter方法[/b]
public class UserBizImpl implements IUserBiz(){ // 注入属性 private IUserDao userDao; // 注入属性 的 setter public void setUserDao(IUserDao userDao){ this.userDao=userDao; } // 方法略 }
③在xml中进行注入
//方式一 用<property /> 将 userDao注入到 userBiz <bean name="userBiz" class="cn.jbit.demo.biz.impl.UserBizImpl"> <property name="userDao" ref="userDao" /> </bean> //方式二 用p命名空间方式 将 userDao 注入到 userBiz <bean name="userBiz" class="cn.jbit.demo.biz.impl.UserBizImpl" p:userDao-ref="userDao" />
构造注入 : 通过带参构造方法给属性设值
①创建要注入的bean类 , 并在配置文件中声明bean对象
//省去类的创建 //声明一个userDao bean对象 <bean name="userDao" class="cn.jbit.demo.dao.impl.UserDaoImpl" />
②创建要被注入的类 并给出 所需的 构造器
public class UserBizImpl implements IUserBiz(){ // 注入属性 private IUserDao userDao; // 注入属性 的 构造方法 public UserBizImpl(IUserDao userDao){ this.userDao=userDao } // 方法略 }
③在配置文件中进行注入
<bean name="userBiz" class="cn.jbit.demo.biz.impl.UserBizImpl" /> <constructor-arg> <!-- 注入userDao --> <ref bean="userDao" /> </constructor-arg> <!-- 如果有多个参数 用 <constructor-arg index="1" value="8" /> index:参数位置 value:值类型 , ref:引及型 --> </bean>
反射注入 : 通过反射的方式给属性设值
[b]① 声明Bean : Spring的IoC组件[/b]@Repository[/b]:持久层组件,用于标注数据访问层组件,如DAO层组件。
@Service[/b]:服务成组件,用于标注业务层组件,如Service层组件;会根据Bean的类型实例化一个首字母为小写的bean的实例,如果要修改bean name可以在@Service("custome beanName")。
@Controller[/b]:用于标注控制层主键,如Strust的Action层组件。
@Component[/b]:泛指组件,当组件不好归类的时候可以用这个标注。
// 定义一个名为userDao的bean @Component("userDao") public class UserDao implements IUserDao(){ // 方法 略 }[b][b]② [/b]装配 : 通过注解的方式对Bean的自动注入[/b]@Autowired :是通过"byType"的方式对Bean属性进行自动注入的,如果Bean属性的类型有多个,那么就添加@Qualifier("beanName") 加以区分。
//声明一个 名为 userBizImpl的 bean @Service public class UserBizImpl implements IUserBiz(){ // 注入名为 userDao 的bean @Autowired @Qualifier("userDao") private IUserDao userDao; // 方法略 }
@Resource:是通过"byType"的方式对Bean属性进行自动注入的,如果Bean属性的类型有多个,那么就用@Resource("beanName") ,@Resource("beanName") 是通过"byName"的方式对Bean属性进行自动注入的。
//声明一个 名为 userBiz的 bean @Service public class UserBiz implements IUserBiz(){ // 注入类型为 IUserDao 的bean @Resource private IUserDao userDao; //注入name 为 userName 的bean; @Resource("userName") private IUserDao userDao1; // 方法略 }
接口注入 : 在spring中被废弃,ejb中有用
Spring 对Bean的四种自动装配(注入)方式autowire= "byName" :通过Bean的名字对属性进行值注入
autowire="byType":通过属性的类型来对属性进行值注入。<慎用>
autowire="constructor":通过构造器来对属性进行值注入。<慎用>
autowire="autodetect":容器自动对属性进行值注入,先用constructor的方式,如果没有构造器,再用byType的方式。<尽量不用>
Spring Bean的应用范围scope="singleton"[/b]:单例(默认),对所有应用都只生成一个实例
scope="prototype"[/b]:对每个应用都生成一个实例
scope="request"[/b]:在web应用中有效,对每个请求都生成一个实例
scope="session"[/b]:在web应用中有效,对每个会话都生成一个实例
scope="global-session"[/b]:在web应用中有效,全局Http会话
相关文章推荐
- spring学习总结(七):IOC & DI 配置Bean之bean的生命周期及bean的配置方式
- spring学习总结(三):IOC & DI 配置 Bean 之配置形式及依赖注入方式
- spring学习总结(四):IOC & DI 配置 Bean 之注入属性细节
- spring学习总结(六):IOC & DI 配置Bean之作用域、加载外部属性文件、SPEL
- spring学习总结(二):IOC & DI 概述及 IOC 容器
- spring学习总结(五):IOC & DI 配置 Bean 之自动装配及bean之间的关系
- 总结一下 Spring的IOC、DI
- 【Spring学习】IoC与DI
- Spring 4 学习笔记2:控制反转(IoC)和依赖注入(DI)
- Spring总结(一)(IoC DI)
- MyEclipse Spring 学习总结一 Spring IOC容器
- Spring学习笔记之基础、IOC、DI(1)
- 总结一下 Spring的IOC、DI
- Spring应用(一) IOC和DI总结
- Spring学习(三)IOC控制反转与DI依赖注入
- Spring IOC及AOP学习总结
- spring学习3-Ioc和DI的简单介绍
- Spring学习笔记----01. 入门知识,IoC/DI
- Spring学习—控制反转(IOC)Spring依赖注入(DI)和控制反转(IOC)
- spring学习总结(1.1)—IOC的理解