2017-04-05 13 views
7

Czy ktoś mógłby podać MWE, jak korzystać z adnotacji @ConfigurationProperties bezpośrednio na metodzie @Bean?Korzystanie z adnotacji `@ ConfigurationProperties` w metodzie` @ Bean`

Widziałem niezliczone przykłady jego użycia w definicjach klas - ale nie ma jeszcze przykładów dla metod @Bean.

Cytując documentation:

  • Dodaj to do definicji klasy lub @Bean metoda
  • @Target (wartość = {type, METODA})

Tak , Myślę, że jest możliwość i zamierzone użycie - ale niestety nie jestem w stanie tego rozgryźć.

Odpowiedz

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(); 
} 

Tutaj klasa DataSource ma proeprties URL, nazwę użytkownika, hasło driverClassName, więc bagażnika sprężyna mapuje je do utworzonego obiektu.

Przykład klasy DataSource:

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

Innymi słowy ten sam efekt, jak gdyby pewne ziarna inicjalizacji z opisów stereotypowych (@Component, @Service etc.) np

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

dzięki za przykład. Dla większej przejrzystości możesz również dodać klasę DataSource – tMJ

+0

@tMJ Sure, zobacz moją edycję. –

+0

To jest interesujące - nie widzę teraz punktu metody fasoli. Nie można bezpośrednio "@ Autowired" klasy DataSource? – tMJ

Powiązane problemy