abdoe :
나는 확실히 내가 제대로 이해한다면 모르겠지만, 내가 가진 것과, 내가 사용할 수 있다는 것입니다 @Value
내에서 값을 읽어 주석을 application.properties
.
내가 알아 낸 것처럼이 경우에만 작동합니다 Beans
.
나는이 같은 이러한 빈을 정의
@Service
public class DBConfigBean {
@Value("${spring.datasource.username}")
private String userName;
@Bean
public String getName() {
return this.userName;
}
}
응용 프로그램이 나는 그러나, 사용자 이름을 검색 할 수있어 시작할 때 - 어떻게 런타임에이 값을 액세스 할 수 있습니까?
때마다 내가 할
DBConfigBean conf = new DBConfigBean() conf.getName();
* 편집하다 *
하지만 난 다른 클래스에서 사용하고자 할 때 내 최초의 문제는 여전히 남아있다 - 때문에 나는이 설정 DBConfigBean을 사용할 수있어 의견에
@Configurable
public SomeOtherClass {
@Autowired
private DBConfigBean dbConfig; // IS NULL
public void DoStuff() {
// read the config value from dbConfig
}
}
나는 빈으로 정의 할 수 있습니다 이는 헬퍼 클래스의 DBConfig를 읽을 수있는 방법
감사
에이 리니 카바 Graonidou :
당신은 새로운 사업자와 서비스를 인스턴스화하지 않아야합니다. 당신은 예를 들어, 주입한다
@Autowired
private DBConfigBean dbConfig;
그리고 dbConfig.getName();
또한 당신은 어떤 필요가 없습니다 @Bean
당신의 장식을 getName()
하는 방법
당신은 어디에 주석 콩을 검색하는 봄을 말할 필요가있다. 그래서 구성에 다음을 추가 할 수 있습니다 :
@ComponentScan(basePackages = {"a.package.containing.the.service",
"another.package.containing.the.service"})
편집하다
@Value
, @Autowired
등 주석은 해당 봄의 인식, 콩과 함께 작업 할 수 있습니다.
당신을 선언 SomeOtherClass
콩으로하고 @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();
}
}