복붙노트

[SPRING] @Value 주석과 환경 API의 차이점은 무엇입니까?

SPRING

@Value 주석과 환경 API의 차이점은 무엇입니까?

@Value 주석이있는 클래스의 필드를 삽입하는 것과 Spring Environment API를 사용하여 필드를 찾는 것 사이에 중요한 차이점이 있습니까? 하나는 다른 것보다 (그리고 어떤 상황에서) 선호됩니까?

@Value 사용 예제 :

class Config {
    @Value("${db.driverClassName}")
    private String driverClassName;

    @Value("${db.url}")
    private String url;

    @Value("${db.username}")
    private String username;

    @Value("${db.password}")
    private String password;

    @Bean
    public javax.sql.DataSource dataSource(){

        PoolProperties poolProperties = new PoolProperties();
        poolProperties.setDriverClassName(driverClassName);
        poolProperties.setUrl(url);         
        poolProperties.setUsername(username);
        poolProperties.setPassword(password);

        return new org.apache.tomcat.jdbc.pool.DataSource(poolProperties);

    }

}

환경 API 사용 예제 :

class Config {
    @Autowired
    private Environment environment;

    @Bean
    public javax.sql.DataSource dataSource(){

        PoolProperties poolProperties = new PoolProperties();
        poolProperties.setDriverClassName(environment.getProperty("db.driverClassName"));
        poolProperties.setUrl(environment.getProperty("db.url"));           
        poolProperties.setUsername(environment.getProperty("db.username"));
        poolProperties.setPassword(environment.getProperty("db.password"));

        return new org.apache.tomcat.jdbc.pool.DataSource(poolProperties);
    }

}

해결법

  1. ==============================

    1.환경은 프로필과 속성의 조합입니다.

    환경은 프로필과 속성의 조합입니다.

    프로파일은 사용자 환경에 따라 활성화되거나 비활성화 될 수있는 이름 지정된 bean 정의의 논리적 그룹입니다. 빈은 XML 또는 주석으로 정의 된 프로파일에 할당 될 수 있습니다. 예를 들어. 개발 모드와 프로덕션 모드에 대해 하나의 프로파일을 가질 수 있습니다. 여기에서 @Profile에 대한 문서를 검색하여 자세한 내용을 볼 수 있습니다.

    환경 워드 프로세서 인용하기 :

    해당 정보에 액세스해야하는 경우가 아니면 $ {..} 형식 및 @Value 주석이있는 자리 표시 자 표기법을 사용해야합니다. 다시 한 번, 문서 인용 :

    요약하면 다음과 같습니다.

  2. from https://stackoverflow.com/questions/26897314/differences-between-value-annotation-and-the-environment-api by cc-by-sa and MIT license