2015-08-01 24 views
11

bất kỳ ai có thể vui lòng tư vấn tại sao chúng ta cần khai báo bean PropertySourcesPlaceholderConfigurer bằng cách sử dụng phương thức tĩnh tĩnh? Tôi chỉ thấy rằng nếu tôi sử dụng không tĩnh cho dưới đây sau đó url sẽ được thiết lập để giá trị null thay vì dùng từ tập tin bất động sản -Cấu hình dựa trên Spring Java với phương pháp tĩnh

@Value("${spring.datasource.url}") 
private String url; 

@Bean 
public static PropertySourcesPlaceholderConfigurer propertyConfig(String profile) { 
    String propertyFileName = "application_"+profile+".properties"; 
    System.out.println(propertyFileName); 
    PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer(); 
    configurer.setLocation(new ClassPathResource(propertyFileName)); 
    return configurer; 
} 

@Bean 
@Profile("local") 
public static String localProfile(){ 
    return "local"; 
} 

@Bean 
@Profile("prod") 
public static String prodProfile(){ 
    return "prod"; 
} 

Trả lời

16

PropertySourcesPlaceholderConfigurer đối tượng chịu trách nhiệm giải quyết @Value chú thích đối với môi trường mùa xuân hiện tại và đề ra của PropertySources. PropertySourcesPlaceholderConfigurer thực hiện lớp học BeanFactoryPostProcessor. Trong vòng đời của vùng chứa, đối tượng BeanFactoryPostProcessor phải được khởi tạo sớm hơn đối tượng của @Configuration lớp được thông báo.

Nếu bạn có @Configuration lớp -annotated với phương pháp dụ trả về một đối tượng PropertySourcesPlaceholderConfigurer, sau đó các container có thể không nhanh chóng các đối tượng PropertySourcesPlaceholderConfigurer mà không instantiating đối tượng @Configuration lớp -annotated riêng của mình. Trong trường hợp này, không thể giải quyết @Value vì đối tượng PropertySourcesPlaceholderConfigurer không tồn tại tại thời điểm diễn ra đối tượng của @Configuration lớp được thông báo. Do đó, trường bắt buộc @Value có giá trị mặc định là null.

Vui lòng xem phần "Bootstrapping" của @Beanjavadoc để biết thêm thông tin.

+0

cảm ơn bạn đã trả lời .... –

Các vấn đề liên quan