2017-04-05 14 views
7

Ai đó có thể cung cấp MWE về cách sử dụng chú thích @ConfigurationProperties trực tiếp trên phương thức @Bean không?Sử dụng chú thích `@ ConfigurationProperties` trên` @ Bean` Phương thức

Tôi đã thấy vô số ví dụ về nó được sử dụng trên các định nghĩa lớp - nhưng không có ví dụ nào cho các phương thức @Bean.

Để trích dẫn documentation:

  • Thêm phần này vào một định nghĩa lớp hoặc một @Bean phương pháp
  • @Target (value = {TYPE, PHƯƠNG PHÁP})

Vì vậy, , Tôi nghĩ rằng có một khả năng và một mục đích sử dụng là tốt - nhưng thật không may là tôi không thể hình dung ra được.

Trả lời

13
spring.datasource.url = [url] 
spring.datasource.username = [username] 
spring.datasource.password = [password] 
spring.datasource.driverClassName = oracle.jdbc.OracleDriver 

@Bean 
@ConfigurationProperties(prefix="spring.datasource") 
public DataSource dataSource() { 
    return new DataSource(); 
} 

Ở đây lớp DataSource có proeprties url, tên người dùng, mật khẩu, driverClassName, do đó khởi động mùa xuân ánh xạ chúng vào đối tượng đã tạo.

Ví dụ về các lớp DataSource:

public class DataSource { 
     private String url; 
     private String driverClassName; 
     private String username; 
     private String password; 
     //getters & setters, etc. 
    } 

Nói cách khác này có tác dụng tương tự như khi bạn khởi tạo một số đậu với chú thích định kiến ​​(@Component, @Service, vv) ví dụ

@Component 
@ConfigurationProperties(prefix="spring.datasource") 
public class DataSource { 
      private String url; 
      private String driverClassName; 
      private String username; 
      private String password; 
      //getters & setters, etc. 
     } 
+0

cảm ơn ví dụ. Để rõ ràng hơn, bạn cũng có thể thêm lớp DataSource – tMJ

+0

@tMJ Chắc chắn rồi, hãy xem bản chỉnh sửa của tôi. –

+0

Điều này thật thú vị - tôi không thấy điểm của phương pháp đậu bây giờ. Không thể trực tiếp '@ Autowired' lớp DataSource? – tMJ

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