Java Spring Annotation相当于参考

时间:2017-06-12 17:28:03

标签: java spring annotations

我试图从XML配置转移,并且对于相当于什么感到困惑 <spring:property name="beanName" ref="beanToReference">

我认为它与@Value("${Property.Value}")注释

类似

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:0)

你可以像这样引用它:

@Bean
MyAnotherBean myAnotherBean() {
    return new MyAnotherBean();
}

@Bean
MyBean myBean(MyAnotherBean beanToReference) {
    final MyBean myBean = new MyBean();
    myBean.setAnotherBean(beanToReference);
    return myBean;
}

或者像这样(如果两个bean在同一个配置类中):

@Bean
MyAnotherBean myAnotherBean() {
    return new MyAnotherBean();
}

@Bean
MyBean myBean() {
    final MyBean myBean = new MyBean();
    myBean.setAnotherBean(myAnotherBean());
    return myBean;
}

答案 1 :(得分:0)

让我们假设您有两个像这样的bean

@Compenent
public class SampleBeanOne{
}

@Compenent
public class SampleBeanTwo{
}

并且您希望像在主要组件中的xml文件中定义一样使用它们

@Compenent
public class MainComponent{

    @Autowired
    private SampleBeanOne sampleBeanOne;         

    @Autowired
    private SampleBeanTwo sampleBeanTwo;         

}

首先,您应该启用像这样的@Autowired注释

<beans  
    xmlns:context="http://www.springframework.org/schema/context"
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-2.5.xsd">

    <context:annotation-config />
</beans>

启用注释注入后,可以在属性,设置器和构造函数上使用自动装配。

默认情况下,Spring按类型使用@Autowired。如果您有多个相同类型的bean,框架将抛出​​一个异常,指示有多个bean可用于自动装配。解析你可以使用@Qualifier注释。

Spring使用bean名称作为默认限定符值,因此如果你这样使用它:

    @Autowired
    private SampleBeanOne myBean;

它假定您拥有SampleBeanOne的MyBean实现并尝试将其注入组件构造中。