Spring 依赖注入(DI)的注解
Posted LarryZeal
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring 依赖注入(DI)的注解相关的知识,希望对你有一定的参考价值。
Spring中想要使用注解进行依赖注入,需要进行如下配置:
<beans xmlns="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/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <context:annotation-config/> </beans>
Spring自带依赖注入的注解
@Required,该注解必须用是setter方法上面,目的是强制要求提供setter所需数据,否则报错。
例如,BeanA中的字段field,有一个setField( T field)方法。当在该方法上使用了@Required之后,在XML中创建BeanA时就必须给出设置field所需的数据。
如下所示:
package o1.bean; import org.springframework.beans.factory.annotation.Required; public class BeanA { private String message; public String getMessage(){ return message; } @Required //只能放在setter上,在XML配置BeanA时必须指定setter注入,否则在Spring容器启动时将抛出异常 public void setMessage(String message){ this.message = message; } }
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="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/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <!--开启注解支持--> <context:annotation-config/> <bean class="o1.bean.BeanA"> <!--因为有了@Required,所以这里必须提供,否则报错--> <property name="message" ref="message"/> </bean> <bean name="message" class="java.lang.String"> <constructor-arg index="0" value="hello world"/> </bean> </beans>
package o1; import o1.bean.BeanA; import org.junit.Before; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class A { private ApplicationContext applicationContext; @Before public void setUp(){ applicationContext=new ClassPathXmlApplicationContext("classpath:applicationContext.xml"); } @Test public void run1(){ BeanA bean = applicationContext.getBean(BeanA.class); System.out.println(bean.getMessage()); } }
@Autowired(required=true)
自动注入,required=true的作用与@Required相同。
可用于构造器、字段、方法。
默认根据参数类型自动装配,但必须只能有一个候选项(required=false则可以允许0个候选项)。
@Value(value="SpEL")
可用于字段、方法(@Autowired method)。
如:
@Value(value="#{message}") private String message;
@Autowired public void initMessage(@Value(value = "#{message}#{message}") String message) { this.message = message; }
@Qualifier(value="限定标识符")
可用于方法、字段、参数。
配合@Autowired使用,可用于多个候选项的情况。
<<<未完待续>>>
以上是关于Spring 依赖注入(DI)的注解的主要内容,如果未能解决你的问题,请参考以下文章
Spring 3.0 学习-DI 依赖注入_创建Spring 配置-使用一个或多个XML 文件作为配置文件,使用自动注入(byName),在代码中使用注解代替自动注入,使用自动扫描代替xml中bea(
框架 day36 Spring3 入门,DI依赖注入,装配bean基于xml/注解, 整合Junit4,配置约束自动提示