spring boot custom properties만들기
스프링 부트 @ConfigurationProperties 예제
Spring에서는 @PropertySource
and @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.properties
Spring 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'}
'Spring' 카테고리의 다른 글
스프링 부트 Resource 파일 데이터로 가져오기 (0) | 2020.06.17 |
---|---|
스프링 부트 @Async 비동기 예제 (0) | 2020.06.16 |
Spring Boot 에 HTML에 Thmeleaf 넣기 (0) | 2020.06.15 |
RestTemplate을 통해 파일 업로드하기 (0) | 2020.06.15 |
RestTemplate Interceptor활용하기 (0) | 2020.06.15 |