【问题标题】:How do I perform Constructor-based dependency injection with Spring using annotations?如何使用注解使用 Spring 执行基于构造函数的依赖注入?
【发布时间】:2013-08-09 16:00:15
【问题描述】:

好的,那么如果我需要在构造函数中放入一些原始值,我该怎么做呢?

    @Autowired
public CustomBean(String name, @Qualifier("SuperBean") SuperBean superBean) {
    super();
    this.superBean = superBean;
    this.name = name;
}

例如,我在这里定义 superBean 具有限定符“SuperBean”,但我也想知道如何在这里使用注释来设置名称值?

我知道使用 xml 配置是可能的,但我也想知道如何使用注释来做到这一点:

<bean id="CustomXmlBean" class="org.arturas.summerfav.beans.CustomXmlBean">
        <constructor-arg name="name" type="String" value="The Big Custom XML Bean" />
        <constructor-arg>
            <bean id="SuperBean" class="org.arturas.summerfav.beans.SuperBean" />
        </constructor-arg>
    </bean>

那么我该如何输入 String、int 和其他泛型类型的值?

【问题讨论】:

    标签: java spring dependency-injection spring-annotations constructorargument


    【解决方案1】:

    这是一种方法:

    @Component 
    public class YourBean { 
        @Autowired
        public YourBean(@Value("${prop1}") String arg1, @Value("${prop2}") String arg2) { 
            // rest of the code
        } 
    } 
    

    【讨论】:

    • 非常感谢,我在谷歌搜索并在Spring的第3章IoC中寻找,但没有找到@Value,我想知道他们为什么没有包含它,这只是对 Spring 文档的反对...我将它与 @Value("some text") 一起使用,你能更详细地解释一下“${prop1}”是什么吗?它是在某处定义的某个值或变量,你能告诉我如何使用它吗?
    • @ArturasM,在 ${prop1} 中,prop1 是属性文件 (loaded via standard spring mechanism) 中定义的键。
    • 谢谢,我想我现在明白了。
    猜你喜欢
    • 2021-08-14
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-02
    • 2011-02-02
    相关资源
    最近更新 更多