프로그래밍/JAVA Spring

[Spring 스프링] 외부 파일을 이용한 Configuration 그런데 이제 @PropertySource와 @Value를 곁들인

hectick 2023. 5. 15. 16:21

 

 

 

[Spring 스프링] Java기반 Configuration

Java 기반으로 빈을 등록할 수 있다. // Java-based Configuration을 하기 위한 클래스로 지정 @Configuration public class AuthenticationPrincipalConfig { // AuthService 빈을 등록 @Bean public AuthService authService() { return new Aut

finger-ineedyourhelp.tistory.com

지난번에 Java기반 Configuration을 하는 방법을 포스팅 했다. 하지만 여기에 추가로 properties 파일에 있는 값이 필요할 때가 있을 수도 있다. 예를 들면 다음 사진에서 security-jwt-token-secret-key 값이나 security-jwt-token-expire-length가 필요할 수 있다.

 

 

 

1. @PropertySource와 Environment

 

@PropertySource 어노테이션과 Environment 객체를 이용해서 properties 파일에 있는 값을 사용할 수 있다.

    // Java-based Configuration을 하기 위한 클래스로 지정
    // application.properties 파일을 활용하기 위한 설정 추가
    @Configuration
    @PropertySource("classpath:application.properties")
    public class PropertySourceConfig {

        private final Environment env;

        public PropertySourceConfig(Environment env) {
            this.env = env;
        }

        // application.properties의 security-jwt-token-secret-key 값을 활용하여 JwtTokenKeyProvider를 빈으로 등록
        @Bean
        public JwtTokenKeyProvider jwtTokenKeyProvider() {
            return new JwtTokenKeyProvider(env.getProperty("security-jwt-token-secret-key"));
        }
    }

 

@PropertySource의 괄호 안에는 properties 파일이 있는 경로를 적어주면 된다.

    @PropertySource("classpath:application.properties")

 

@PropertySource 어노테이션을 사용해서 Properties 파일을 등록하면, 스프링은 이 파일의 내용을 읽어서 Environment 객체에 넣어준다.

    private final Environment env;

 

그러면 Environment의 getProperty 메서드를 통해 Environment 객체에 등록된 프로퍼티 값을 참조할 수 있다.

	// application.properties의 security-jwt-token-secret-key 값을 활용하여 JwtTokenKeyProvider를 빈으로 등록
        @Bean
        public JwtTokenKeyProvider jwtTokenKeyProvider() {
            return new JwtTokenKeyProvider(env.getProperty("security-jwt-token-secret-key"));
        }

 

 

2. @PropertySource와 @Value

 

@PropertySource와 @Value를 이용해서도 properties 파일에 있는 값을 사용할 수 있다.

    // Java-based Configuration을 하기 위한 클래스로 지정
    // application.properties 파일을 활용하기 위한 설정 추가
    @Configuration
    @PropertySource("classpath:application.properties")
    public class PropertySourceConfig {

        // application.properties의 security-jwt-token-secret-key 값을 활용하여 JwtTokenKeyProvider를 빈으로 등록
        @Bean
        public JwtTokenKeyProvider jwtTokenKeyProvider(@Value("${security-jwt-token-secret-key}") String value) {
            return new JwtTokenKeyProvider(value);
        }
    }

 

@Value("${...}") 형태로 사용할 수 있다. {} 안에 프로퍼티 키 이름을 넣어주었다.

    @Value("${security-jwt-token-secret-key}")