【问题标题】:Using Spring @Value annotation for multiple properties对多个属性使用 Spring @Value 注解
【发布时间】:2013-12-12 04:23:38
【问题描述】:

我正在使用@Value注解注入属性,现在属性增加了,构造函数变得非常大。有没有办法处理这个问题

@Component
public class Job {

    private String someProperty

    @Autowired
    public Job(@Value("${some.property}") String someProperty,.............){
        this.someProperty = someProperty
    }

【问题讨论】:

    标签: java spring


    【解决方案1】:

    直接注释字段即可。

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

    您可以在@PostConstruct 方法中进行任何其他处理。

    【讨论】:

    • 如果我使用构造函数,编写单元测试很容易。我可以Job job = new Job("fakeSomeProperty");..
    【解决方案2】:

    你为什么不这样做:

    @Component public class Job {
    
    @Value("${some.property1}") private String someProperty1
    @Value("${some.property2}") private String someProperty2
    //...
    
    @Autowired public Job( ){ 
    
    
    // your someProperty1 is already set
    }
    

    【讨论】:

    • 好的,所以 someProperty1 在创建类的实例时被初始化?
    • 是的,这些值将在应用程序启动时由 Spring 初始化。我假设您将使用 @Autowired 获得此类的一个实例。
    猜你喜欢
    • 2011-09-19
    • 2013-01-15
    • 2018-09-14
    • 1970-01-01
    • 2020-10-22
    • 2017-08-31
    • 2017-01-20
    • 1970-01-01
    • 2011-10-31
    相关资源
    最近更新 更多