봄 부팅 응용 프로그램 속성에서 값을 읽을

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

 }

추천

출처http://43.154.161.224:23101/article/api/json?id=202222&siteId=1