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,配置约束自动提示

Spring中依赖注入DI

Spring中依赖注入DI

Web框架—Spring Framework学习笔记(IoC DI Bean)

Spring依赖注入基于XML的 DI