春ブーツは、アプリケーションのプロパティから値を読み取ります

abdoe:

私はそれを正しく理解すればわからないんだけど、私が得たものから、私が使用できることである@Value私から値を読み取るために注釈をapplication.properties

私だけのためにこの作品を考え出したようBeans

私はこのようなA Beanを定義し

@Service
public class DBConfigBean {


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

    @Bean
    public String getName() {
        return this.userName;
    }
}

アプリケーションは、私はユーザー名を取得することができるよ起動すると、しかし - どのように私は、実行時にこの値にアクセスすることができますか?

私はやるたび

DBConfigBean conf = new DBConfigBean() conf.getName();

* EDIT *

私は別のクラスでそれを使用したい場合は、私の最初の問題は依然として残っている - 私はこの設定DBConfigBeanを使用することができるよコメントのために

@Configurable
public SomeOtherClass {

   @Autowired
   private DBConfigBean dbConfig; // IS NULL

   public void DoStuff() {
       // read the config value from dbConfig
   }
} 

どのように私は私がBeanとして定義することができますいくつかのヘルパークラスでDBCONFIGを読むことができます

感謝

Eirini Graonidou:

あなたは、new演算子を使用してサービスをインスタンス化してはいけません。次の例のように、それを注入すべきです

@Autowired
private DBConfigBean dbConfig;

その後 dbConfig.getName();

また、あなたは、任意の必要はありません@Bean、あなたにデコレータをgetName()する方法

あなたはどこの注釈付きの豆を検索するためのバネを指示する必要があります。だからあなたの設定では、次を追加することができます。

@ComponentScan(basePackages = {"a.package.containing.the.service",
                             "another.package.containing.the.service"})

EDIT

@Value@Autowired豆などの注釈ができる唯一の仕事、その春は認識しています。

あなたを宣言SomeOtherClassBeanとして、あなた@Configurationクラスのパッケージの設定を追加

@Bean
private SomeOtherClass someOtherClass;

その後

 @Configuration
 @ComponentScan(basePackages = {"a.package.containing.the.service"              
  "some.other.class.package"})
 public class AppConfiguration {

  //By the way you can also define beans like:
   @Bean 
   public AwesomeService service() {
       return new AwesomeService();
   }

 }

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=202224&siteId=1