码迷,mamicode.com
首页 > 编程语言 > 详细

Spring 依赖注入(DI)的注解

时间:2016-05-25 13:24:45      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:

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)的注解

标签:

原文地址:http://www.cnblogs.com/larryzeal/p/5526557.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!