2013-12-12 4 views
1

Я использую @value аннотацию, чтобы придать свойства и теперь свойства увеличились, и конструктор получают очень большие. Там способ справиться с этой проблемойИспользования Spring @value аннотаций для нескольких свойств

@Component 
public class Job { 

    private String someProperty 

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

ответ

3

Просто аннотируйте поля напрямую.

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

Вы можете выполнить любую дополнительную обработку в методе @PostConstruct.

+0

написание модульного теста легко Если я использую конструктор. Я могу выполнить «Job job = new Job (« fakeSomeProperty »);' .. – user1178585

1

Почему бы вам не только сделать это:

@Component public class Job { 

@Value("${some.property1}") private String someProperty1 
@Value("${some.property2}") private String someProperty2 
//... 

@Autowired public Job(){ 


// your someProperty1 is already set 
} 
+0

ok, поэтому someProperty1 инициализируется при создании экземпляра класса? – user1178585

+0

Да, эти значения будут инициализированы весной при запуске приложения. Я предполагаю, что вы получите экземпляр этого класса, используя @Autowired. –

Смежные вопросы