Spring

spring boot custom properties만들기

기록만이살길 2020. 6. 16. 21:22
반응형

spring boot custom properties만들기

스프링 부트 @ConfigurationProperties 예제

Spring에서는 @PropertySourceand @Value를 사용 하여 속성 파일에서 값을로드 할 수 있습니다 . Spring Boot에서도 사용할 수 있습니다. 그러나 Spring Boot는 속성 파일에서 가치를 얻는 쉬운 방법을 제공합니다. 이 페이지에서는 @ConfigurationProperties속성 파일에서 값을 얻는 데 사용하는 방법을 보여줍니다 .

필요

  • 메이븐 3 이상
  • Intellij

프로젝트 구조

Intellij에서 maven 프로젝트를 만들고 다음과 같이 구조를 만듭니다.

├─main
│  ├─java
│  │  └─com
│  │      └─henry
│  │          └─properties
│  │                  DefaultProperties.java
│  │                  SimpleController.java
│  │                  SpecialProperties.java
│  │
│  └─resources
│          application.properties
│          server.properties
│
└─test
    └─java

pom.xml 파일의 종속성

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>1.3.2.RELEASE</version>
</dependency>

특성 파일

이 학습서에서는 두 개의 특성 파일에서 특성을로드하는 방법을 보여줍니다. application.propertiesSpring Boot의 기본 속성 파일입니다. 속성을 저장하지 않으려면 application.properties다음과 같은 다른 속성을 만들 수 있습니다 server.properties. 다른 속성을 만들어 자신의 속성을 저장하는 것이 좋습니다.

application.properties의 내용

server.info.address=192.168.1.1
server.info.username=user1
server.info.password=password

server.properties의 내용

server.info.address=192.168.1.2
server.info.username=user2
server.info.password=password2

자바 코드

클래스에 속성을로드하기 위해 클래스를 만듭니다 DefaultProperties. 의 등록 정보를 확인 DefaultProperties하고 application.properties일치합니다.

@Configuration
@ConfigurationProperties(prefix = "server.info")
public class DefaultProperties {
    private String address;
    private String username;
    private String password;

    //getter and setter methods

    @Override
    public String toString() {
        return "DefaultProperties{" +
                "address='" + address + '\'' +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

@ConfigurationProperties주석 tell Spring Boot이 클래스는 속성 파일에 바인딩되어 있습니다. 사용은 prefix구성 파일에 일치하는 속성에 특별한 접두사를 정의합니다. 대신 특수 파일에서 속성을 얻으려면 application.properties. SpecialProperties다음과 같이 만들 수 있습니다 .

@Configuration
@ConfigurationProperties(locations="classpath:server.properties",prefix = "server.info")
public class SpecialProperties {
    private String address;
    private String username;
    private String password;

    //getter and setter methods

    @Override
    public String toString() {
        return "SpecialProperties{" +
                "address='" + address + '\'' +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

유일한 차이점은에 locations속성 추가 입니다 @ConfigurationProperties.

이 프로젝트를 시작하려면 컨트롤러가 필요합니다.

@RestController
@EnableAutoConfiguration
@ComponentScan(value = "com.henry.xi.properties")
public class SimpleController {
    @Autowired
    private DefaultProperties defaultProperties;

    @Autowired
    private SpecialProperties specialProperties;

    @RequestMapping(value = "/properties", method = RequestMethod.GET)
    public String getProperties() {
        return defaultProperties.toString() + "<br>" + specialProperties.toString();
    }

    public static void main(String[] args) {
        SpringApplication.run(SimpleController.class, args);
    }
}

주요 방법을 실행 SimpleController하고 접속 하면 다음과 같은 결과를 볼 수 있습니다.[http://localhost:8080/properties](http://localhost:8080/properties)

DefaultProperties{address='192.168.1.1', username='user1', password='password'}
SpecialProperties{address='192.168.1.2', username='user2', password='password2'}
반응형