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
豆などの注釈ができる唯一の仕事、その春は認識しています。
あなたを宣言SomeOtherClass
Beanとして、あなた@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();
}
}