spring注入简记
我们知道对象是交给容器来管理的那么
init() destroy():可以在bean配置中设置对象初识化前执行和销毁后执行
int-delay=""表示是否延迟实例化即容器实例时还是获取bean时实例化
bean 中scope=“” 范围属性表示单例或多个
用来指定bean的作用域
singleton---单例 只创建一个对象。
prototype---原型 想创建多少个就创建多少了。
request---针对Web项目,不同的请求创建单独的Bean对象,同一个请求共享一个Bean。
session---针对Web项目,不同的会话创建单独的Bean对象,同一个会话共享一个Bean。
一:采用xml注入配置
1对象注入<bean id="" class=""></bean>
2类中注入对象分两种方式
2.1set注入bean
<bean ...>
<property name="" ref="对应bean"> //在类中属性对应的对象引用需有set()方法;
</bean>
2.2构造器参数注入bean(类中构造器将需要的注入相关内容做参数)
<bean...>
<constructor index=0 type=注入的类型 ref=注入的bean />//参数的位置,对应的包名类名,id
<constructor .../> //参数如果是基本类型直接用 index='' value=""
3注入的是基本类型,将ref改为value=""
4集合注入有对应集合标签 如set list pro map
<property name="set">
<set>...不同集合赋值有差异(value value pro: key entry :key /value。。。</set>
</property>
二,采用注解注入(@resource 默认按名称找不到按类型 @autowired 默认类型)
首先配置xml文档命名空间,以及添加标签<context:annotatiion-config/> 这样隐式的注册了处理分析注解的解释器,还需添加注解包。
1.注解种类比较jdk有支持的注解 spring 也有支持的注解,可以使用jdk不依赖框架低耦合注解@resource
2.注解可以在属性前,也可在set方法前。可以根据类型或者名称寻找xml中的bean.(貌似代码比较简洁了而xml配置不要再那样去嵌套配置了)
原理(大概是:首先注解可以定义存在周期譬如运行期,可以注解标注位置譬如字段属性上方法上,通过遍历所有的bean,然后遍历bean中所有属性和方法,找到所对应的注解然后做相应的处理,再到xml文件中寻找匹配的bean实现注入)
三 以上都属于手动装配另一种属于自动装配:(auotwire=“” 有个按类型手动装配注解autowired有些相似)
(只需要bean 中添加属性参数,代码不需要做处理)
在<bean id="" class="" autowire="bytype"...>
bytype:按类型 找到多个抛出异常,没找到注入null
byname:按名称,没找到也是null
constructor:按构造器参数注入bean,没找到炮异常。
autodetect:自动检测如果是默认构造器采用bytype,参数构造器采用constructor方式。
(听说实现同一个接口bean会被视为同一类型不能被按类型注入待测试)
四采用自动扫描注入:(这种方式很好狠强大)
1.首先xml中需要添加命名空间,同时添加<context:componet-scan basebage="包下包括子包中的类">
将扫描包下类中并且有@service @repository @controller @conponent注解的类。(貌似只是一种可读性一种分类标记,之间没有实际不同意义)
2.默认的bean 名称为类名首字母小写的名称。
3.类上同时添加注解@Scope("prototype")可以修改作用域
4.在初始化方法上添加
@postConstruct
init()
@preDestroy
destroy()
spring注入简记的更多相关文章
- Spring注入JPA+JPA事务管理
本例实现的是Spring注入JPA 和 使用JPA事务管理.JPA是sun公司开发的一项新的规范标准.在本质上来说,JPA可以看作是Hibernate的一个子集:然而从功能上来说,Hibernate是 ...
- Spring注入中byType和byName的总结
1.首先,区分清楚什么是byType,什么是byName. <bean id="userServiceImpl" class="cn.com.bochy.servi ...
- spring注入参数详解
spring注入参数详解 在Spring配置文件中, 用户不但可以将String, int等字面值注入到Bean中, 还可以将集合, Map等类型的数据注入到Bean中, 此外还可以注入配置文件中定义 ...
- 线程中无法实例化spring注入的服务的解决办法
问题描述 在Java Web应用中采用多线程处理数据,发现Spring注入的服务一直报NullPointerException.使用注解式的声明@Resource和XML配置的bean声明,都报空指针 ...
- FlushMode属性与transaction(spring注入的事务)
一.参见hibernate的api http://tool.oschina.net/apidocs/apidoc?api=hibernate-3.6.10 http://tool.oschina.ne ...
- 项目中Spring注入报错小结
之前在做单元测试时采用注解方式进行service对象的注入,但运行测试用例时对象要注入的service对象总是空的,检查下spring配置文件,我要配置的bean类xml文件已经包含到spring要加 ...
- 在静态方法里调用spring注入的方法
在静态方法里直接调用非静态方法是不行的. 那如何调用spring注入的方法呢? @Component public class AutoLoginUtil { @Autowired p ...
- Spring注入
Spring注入 Spring注入是指在启动Spring容器加载bean配置的时候,完成对变量的赋值行为. 常用的两种注入方式: setter注入 构造注入 <?xml version=&quo ...
- 基于配置文件的Spring注入
基于配置文件的Spring注入 1.依赖注入的概述 依赖注入指的是通过Spring配置文件的方式创建对象时,直接通过配置的方式将数据注入到该对象的标量类型属性,并从Spring容器中获取指定对象注入到 ...
随机推荐
- MySQL Replication浅析
MySQL Replication是MySQL非常出色的一个功能,该功能将一个MySQL实例中的数据复制到另一个MySQL实例中.整个过程是异步进行的,但由于其高效的性能设计,复制的延时非常小.MyS ...
- SQLServer学习笔记<>日期和时间数据的处理(cast转化格式、日期截取、日期的加减)和 case表达式
日期和时间数据的处理. (1)字符串日期 ‘20080301’,这一串为字符串日期,但必须保证为四位的年份,两位的月份,两位的日期.例如,查询订单表日期大于‘20080301’.可以这样写: 1 se ...
- 浅谈SQL中的单引号
单引号:对很对计算机语言包括(SQL)是做字符串引用的:这个是大家通常知道的作用:但是对SQL语言来说:还有另外一个作用是作引号的转义 总结下:对oracle(sql)的作用. 做字符串引用:例如'a ...
- PHP判断键值数组是否存在,使用empty或isset或array_key_exists
<?php $a = array('a'=>1, 'b'=>0, 'c'=>NULL); echo 'a test by empty: ' , empty($a['a']) ...
- Drainage Ditches 分类: POJ 图论 2015-07-29 15:01 7人阅读 评论(0) 收藏
Drainage Ditches Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 62016 Accepted: 23808 De ...
- 乘号在python中的用法,用乘号将元素重复在列表中
#里面:>>> a=['*5] >>> a ['] >>> a=['0,'*5] >>> a ['0,0,0,0,0,'] #外 ...
- Spring测试工具返回Application
package pmisf.webservice.util; import javax.servlet.ServletContextEvent; import javax.servlet.Servle ...
- P1119 灾后重建
题目背景 B地区在地震过后,所有村庄都造成了一定的损毁,而这场地震却没对公路造成什么影响.但是在村庄重建好之前,所有与未重建完成的村庄的公路均无法通车.换句话说,只有连接着两个重建完成的村庄的公路才能 ...
- ecshop商品分类页获取相册列表方法
第1步:找到根目录的category.php文件,查找约:486行左右(注意这不是准确位置,看实际的哦),找到这个函数: /** * 获得分类下的商品 * * @access public * @pa ...
- SaveXml的方法汇总
/// <summary> /// 保存XML文件 /// </summary> /// <returns></returns> public bool ...