2、spring的对象类型
2015-12-06 20:02
239 查看
2.1、spring的对象类型
singleton和Prototype
singleton是单例
Prototyp是多例
默认是单例的对象
使用范围:
只要属性中没有需要修改的值(dao,service这两层的数据一般不会有相应的属性会修改)所以可以考虑用单例
如果属性中有需要修改的变量如:action中会存储很多要操作的vo类,此时这个对象的状态会被修改,就要使用多例
2.2、依赖注入
基本条件:所有的类都要被spring所管理才能进行依赖注入
有多种方式可以进行注入
1、使用set注入(最常用的方式)
1.1、提供相应的要注入的类的setter
![](http://images2015.cnblogs.com/blog/852148/201512/852148-20151206200110050-2051824434.png)
1.2、在配置文件中注入
![](http://images2015.cnblogs.com/blog/852148/201512/852148-20151206200111440-953842446.png)
2、基于构造函数的注入(了解)
![](http://images2015.cnblogs.com/blog/852148/201512/852148-20151206200113050-1114939088.png)
2.3、属性注入和自动注入
1、属性注入
![](http://images2015.cnblogs.com/blog/852148/201512/852148-20151206200115065-728989663.png)
2、自动注入
一般不使用
2.1、byName是根据set的名称来注入,如果名称不对就无法注入(默认情况)
2.2、byType表示是根据类型来注入,和名称无关,如果一个类中有两个相同类型的对象就无法注入
如果要使用一般使用byName
![](http://images2015.cnblogs.com/blog/852148/201512/852148-20151206200116706-995304694.png)
![](http://images2015.cnblogs.com/blog/852148/201512/852148-20151206200119300-1557652935.png)
2.4、基于Annotation的注入
1、设置Beans.xml的schma
![](http://images2015.cnblogs.com/blog/852148/201512/852148-20151206200127706-1583714368.png)
2、在类上面设置
![](http://images2015.cnblogs.com/blog/852148/201512/852148-20151206200129831-1190197838.png)
3、spring3.0之后的Annotation建议
由于开发中一般都是分为四层体系:data,dao,service,action,
建议在dao层
![](http://images2015.cnblogs.com/blog/852148/201512/852148-20151206200131019-904280653.png)
service
![](http://images2015.cnblogs.com/blog/852148/201512/852148-20151206200132112-1398066825.png)
action层
![](http://images2015.cnblogs.com/blog/852148/201512/852148-20151206200133456-1279495524.png)
singleton和Prototype
singleton是单例
Prototyp是多例
默认是单例的对象
使用范围:
只要属性中没有需要修改的值(dao,service这两层的数据一般不会有相应的属性会修改)所以可以考虑用单例
如果属性中有需要修改的变量如:action中会存储很多要操作的vo类,此时这个对象的状态会被修改,就要使用多例
2.2、依赖注入
基本条件:所有的类都要被spring所管理才能进行依赖注入
有多种方式可以进行注入
1、使用set注入(最常用的方式)
1.1、提供相应的要注入的类的setter
![](http://images2015.cnblogs.com/blog/852148/201512/852148-20151206200110050-2051824434.png)
1.2、在配置文件中注入
![](http://images2015.cnblogs.com/blog/852148/201512/852148-20151206200111440-953842446.png)
2、基于构造函数的注入(了解)
![](http://images2015.cnblogs.com/blog/852148/201512/852148-20151206200113050-1114939088.png)
2.3、属性注入和自动注入
1、属性注入
![](http://images2015.cnblogs.com/blog/852148/201512/852148-20151206200115065-728989663.png)
2、自动注入
一般不使用
2.1、byName是根据set的名称来注入,如果名称不对就无法注入(默认情况)
2.2、byType表示是根据类型来注入,和名称无关,如果一个类中有两个相同类型的对象就无法注入
如果要使用一般使用byName
![](http://images2015.cnblogs.com/blog/852148/201512/852148-20151206200116706-995304694.png)
![](http://images2015.cnblogs.com/blog/852148/201512/852148-20151206200119300-1557652935.png)
2.4、基于Annotation的注入
1、设置Beans.xml的schma
![](http://images2015.cnblogs.com/blog/852148/201512/852148-20151206200127706-1583714368.png)
2、在类上面设置
![](http://images2015.cnblogs.com/blog/852148/201512/852148-20151206200129831-1190197838.png)
3、spring3.0之后的Annotation建议
由于开发中一般都是分为四层体系:data,dao,service,action,
建议在dao层
![](http://images2015.cnblogs.com/blog/852148/201512/852148-20151206200131019-904280653.png)
service
![](http://images2015.cnblogs.com/blog/852148/201512/852148-20151206200132112-1398066825.png)
action层
![](http://images2015.cnblogs.com/blog/852148/201512/852148-20151206200133456-1279495524.png)
相关文章推荐
- java调用jira接口
- 1、Spring的导入
- spring框架学习(五)注解
- 4、Struts2的其他知识
- java反射详解
- 2、Struts中的action
- spring框架学习(四)自动装配
- Java41---42
- spring框架学习(三)junit单元测试
- Java-TreeSet的用法-入门
- Java中Iterator(迭代器)的用法及其背后机制的探究
- Gradle sync failed: java.lang.NullPointerException
- Java数组二分查找
- Java数组思维导图
- Java基础知识强化101:Java 中的 String对象真的不可变吗 ?
- MyEclipse代码提示设置
- 底层_读取文件时上锁_demo
- JAVA实现发送电子邮件
- spring框架学习(二)依赖注入
- java如何产生随机数