使用@Component提供属性名称/值

时间:2013-04-16 06:40:54

标签: java spring components autowired

请处理这个基本问题。

我曾经使用@Autowired注释,其中属性(类变量)可以使用该类的键/值格式赋予值。

<bean id="class" class="a.b.c.Class" lazy-init="true">
        <property name="var1" value="${var1}" />
</bean>

我将Class更改为带有组件扫描选项的@Component,它不需要自动装配。我现在如何添加属性变量?

另外,在编写Junits时我不想遇到麻烦。

谢谢,

2 个答案:

答案 0 :(得分:4)

如果您正在考虑属性文件中的属性,请查看@PropertySource@Value注释。

@Component
@PropertySource("classpath:myProps.properties")
public class MyComponent {

    @Value("${some.property}")
    private String valueFromProperty;

    // You can also use environment
    @Autowired
    private Environment env;

    public void someMethod() {
        String prop = env.getProperty("some.property");
        MyBean bean = new MyBean();
        bean.setProp(prop);
        return bean;
    }
}

答案 1 :(得分:0)

在参考文献(Chapter 4. IoC container)中查看Spring的@Value注释。

应加载属性:

<beans>
   <context:property-placeholder location="classpath:/com/acme/your.properties"/>
</beans>