Spring:依赖注入(注解方式)
来源:互联网 发布:上山下乡知乎 编辑:程序博客网 时间:2024/05/16 13:43
注解方式实现依赖注入支持手工装配和自动装配(慎用)
一般是声明bean和bean直接的依赖关系的时候用比较好
使用注解方式时,也支持给Field注入值(在XML中不可以给Field注入)。另外就是setter方式注入。
@Resource注解在spring安装目录的lib\j2ee\common-annotations.jar
注解方式必须
1、 引入context命名空间。
2、 在配置文件中添加context:component-scan标签。多个包的时候,可以用逗号隔开。(表示把这些对象纳入容器管理)
<?xmlversion="1.0"encoding="UTF-8"?>
<beansxmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-2.5.xsd">
<!--设置为自动扫描与装配bean,扫描指定包及其所有下级包中的类,可以写多个,之间用英文的逗号隔开 -->
<context:component-scanbase-package="cn.itcast"></context:component-scan>
</beans>
spring2.5为我们引入了组件自动扫描机制,它可以在类路径底下寻找标注了@Component、@Service、@Controller、@Repository注解的类,并把这些类纳入进spring容器中管理。它的作用和在xml文件中使用bean节点配置组件是一样的。
功能介绍:
@Service用于标注业务层组件、
@Controller用于标注控制层组件(如struts中的action)、
@Repository用于标注数据访问组件,即DAO组件。
而@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
@Scope用于指定当前bean的作用域,是使用prototype还是singleton。
这需要通过@Resource注解实现,@Resource注解可以标注在字段或属性的setter方法上,但它默认按名称装配。名称可以通过@Resource的name属性指定,如果没有指定name属性,当注解标注在字段上,即默认取字段的名称作为bean名称寻找依赖对象,当注解标注在属性的setter方法上,即默认取属性名作为bean名称寻找依赖对象。
@Resource默认按名称装配,当找不到与名称匹配的bean才会按类型装配。如果没有指定name属性,并且按照默认的名称找不到依赖对象时, @Resource注解会回退到按类型装配。但一旦指定了name属性,就只能按名称装配了。
例如:
@Resource(name="personDao")
private PersonDao personDao;;//用于字段上
@Resource(name="personDao")
public void setPersonDao(PersonDao personDao) {//用于属性的set方法上
this.personDao = personDao;
}
后一种相当于xml配置文件中的
<property name=“personDao"ref="personDao" />
自动装配
<beanid=“foo” class=“...Foo” autowire=“autowiretype”>
autowire属性取值如下
* byType:按类型装配,可以根据属性的类型,在容器中寻找跟该类型匹配的bean。如果发现多个,那么将会抛出异常。如果没有找到,即属性值为null。
* byName:按名称装配,可以根据属性的名称,在容器中寻找跟该属性名相同的bean,如果没有找到,即属性值为null。
*constructor与byType的方式类似,不同之处在于它应用于构造器参数。如果在容器中没有找到与构造器参数类型一致的bean,那么将会抛出异常。
*autodetect :首先尝试使用constructor来自动装配,然后使用byType方式。不确定性的处理与constructor方式和byType方式一致。(通过bean类的自省机制(introspection)来决定是使用constructor还是byType方式进行自动装配。如果发现默认的构造器,那么将使用byType方式。)
在实际应用中建议使用手工装配,因为自动装配会产生未知情况,开发人员无法预见最终的装配结果。
也可以使用autowire注解自动实现注入,它按照类型匹配,也可以结合required注解实现按照名字匹配,这个是spring提供的注解,而resource注解是javaee提供的注解
用谁一目了然。
- Spring:依赖注入(注解方式)
- Spring框架(三)依赖注入之注解方式
- spring 注解方式实现依赖注入
- Spring依赖注入:注解注入
- Spring依赖注入的四种方式(重点是注解方式)
- Spring——基于注解方式的依赖注入
- Spring依赖注入方式
- Spring依赖注入方式
- spring依赖注入方式
- Spring依赖注入方式
- Spring依赖注入方式:
- spring 依赖注入方式
- spring依赖注入方式
- Spring依赖注入方式
- spring 依赖注入方式
- Spring依赖注入方式
- Spring 依赖注入方式
- Spring依赖注入方式
- 工作中遇到的问题之handler处理机制
- aa
- OSWatch
- iOS第三方开源库
- oracle replace
- Spring:依赖注入(注解方式)
- MVC中一个表单实现多个提交按钮(一个action搞定添删改)
- 【CDH5】-001CentOS6.5 下yum安装PostgreSQL
- Android 牛逼哄哄的快速开发框架AndroidOne,秒杀最火的Xutils
- C语言-输入任意长度字符串
- 动态时间规整(DTW)
- MFC Test程序知识点解析
- Assembly x64 Intro - Nasm Example
- URL传递中文参数,Windows正常在后台获取参数,但Linux获取的参数是乱码 的解决方法。