spring boot 프로젝트 application.properties 파일 저장 및 사용 안내
저 희 는 보통 여러 개의 응용 환경 이 있 습 니 다.개발 환경,테스트 환경,생산 환경 이 있 습 니 다.각 환경의 설정 이 약간 다 를 수 있 습 니 다.저 는 이것 에 따라 여러 개의 프로필 을 만 들 고 메 인 프로필 로 그 하위 설정 을 읽 는 것 을 제어 할 수 있 습 니 다.
spring boot 프로젝트 를 만 든 후 여러 개의.properties 파일 을 동시에 만 들 수 있 습 니 다.요구 하 는 형식 만 있 으 면 됩 니 다.
형식:application-{profile}.properties;{프로필}은 설정 파일 이름 을 사용자 정의 하 는 변수 입 니 다.
각각 세 개의 응용 환경의 설정 과 주 설정 을 만 듭 니 다.
1.application.properties 메 인 설정(이하 설정 내용,여기 dev 는 다른 설정 파일 의 표지 이름 dev,test,prod)
# ( :application-{profile}.properties;{profile} )
spring.profiles.active=dev
2.application-dev.properties 개발 환경(이하 설정 내용)
spring.application.name=tyh-demo-prop
#
server.port=10001
3.application-test.properties 테스트 환경(이하 설정 내용)
spring.application.name=tyh-demo-prop
#
server.port=10002
4.application-prod.properties 생산 환경(이하 설정 내용)
spring.application.name=tyh-demo-prop
#
server.port=10003
주 설정 의 spring.profiles.active=dev 를 변경 하면 다른 하위 설정 파일 을 전환 할 수 있 습 니 다.이 방법 은.properties 파일 이 여전히 jar 에 있 기 때문에 수정 할 때 불편 하고 너무 많은 정보 가 개발 에 노출 되 어 유출 되 기 쉬 우 므 로 결합 방법 2 를 사용 합 니 다.
3.방법 2 jar 패키지 외부 프로필
저 희 는 생산 환경 을 개발 하고 발표 할 때 설정 파일 의 관련 내용 을 수정 하 는 경우 가 많 습 니 다.기본.properties 설정 파일 은 jar 패키지 에 봉인 되 어 수정 하기 가 불편 합 니 다.그래서 spring boot 는 설정 파일 을 읽 는 위 치 를 몇 개 주 었 습 니 다.저 희 는 이 방식 으로 jar 패키지 외부 에서 설정 파일 을 수정 할 수 있 습 니 다.
보통 리 소스 폴 더 에.properties 를 넣 습 니 다.
spring boot 는 다음 순서 로 프로필 을 찾 습 니 다.
1."현재 디 렉 터 리"의/config 폴 더 아래
2."현재 디 렉 터 리"아래
3.classpath 의/config 폴 더 아래
4.classpath 아래
다음은 그림 설명 이다.
프로필 을 찾 으 면 더 이상 찾 지 않 습 니 다.우선 순위 이하 의 프로필 은 읽 히 지 않 고 찾 으 면 중단 합 니 다.
"현재 디 렉 터 리"는 실행 가능 한 jar 패키지 로 연결 한 후,일반적으로 bat 파일 로 시작 하 는 것 을 말 합 니 다.이 현재 디 렉 터 리 는 bat 파일 의 디 렉 터 리 를 말 합 니 다.
우리 가 일반적으로 저장 하 는 위 치 는 우선 순위 가 가장 낮은 위치 이기 때문에 우 리 는 설정 파일 을 따로 복사 해서 bat 의"현재 디 렉 터 리"에 놓 으 면 됩 니 다.
4.설정 항목 암호 화
Google 의 application.properties 파일 에는 데이터베이스 연결,캐 시 서버 연결 등 민감 한 정보 가 많 습 니 다.이 사용자 이름 비밀 번 호 는 외부 에서 볼 수 없 기 때문에 암호 화하 여 저장 하 는 것 이 좋 습 니 다.
우 리 는 jasypt 을 사용 하여 복호화 를 진행 합 니 다.먼저 프로젝트 를 만 들 고,나 는 spring boot 프로젝트 를 만 들 었 습 니 다.
1.pom.xml 정보 추가
<!-- -->
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
2.application.properties 파일 에 설정 항목 을 추가 합 니 다.jasypt 으로 복호화 해 야 하 는 밀 문 은"ENC(...)"로 묶 어야 합 니 다.
spring.application.name=tyh-demo-prop
server.port=10001
# , , ( )
#jasypt.encryptor.password=112233
#
spring.datasource.username=ENC(nm3F96GtUIwZUHzsP0Mp1A==)
spring.datasource.password=ENC(lmn7lAlePy1hZu505WO0xQ==)
3.프로그램 시작 클래스 입 니 다.기본 jasypt 키 는 설정 파일 에 있 지만 비밀문서 와 키 가 모두 설정 파일 에 있 기 때문에 키 를 프로그램 에 두 었 습 니 다.
@SpringBootApplication
public class App {
public static void main(String[] args) {
// ( )
System.setProperty("jasypt.encryptor.password", "112233");
SpringApplication.run(App.class, args);
}
}
4.설정 파일 의 설정 항목 을 주석 으로 주입 합 니 다.
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class SysConfig {
@Value("${spring.datasource.username}")
private String dbUsername;
@Value("${spring.datasource.password}")
private String dbPassword;
// get set
}
5.controller 와 action 을 작성 하여 호출 합 니 다.
import com.tyh.demo.prop.config.SysConfig;
import org.jasypt.encryption.StringEncryptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping("/test")
public class TestController {
@Autowired
StringEncryptor encryptor;
@ResponseBody
@RequestMapping("/index")
public String index() {
return encryptor.encrypt("taiyonghai");
}
@Autowired
SysConfig sysConfig;
@ResponseBody
@RequestMapping("/getConfig")
public SysConfig getConfig() {
//spring boot
return sysConfig;
}
}
PBE With MD5AndDES 암호 화 방식 을 사용 하기 때문에 암호 화 될 때마다 결과 가 다 르 기 때문에 데 이 터 를 암호 화하 기 에 적합 합 니 다.실행 후 자동 복호화 설정 항목 을 볼 수 있 습 니 다.
5.설정 항목 에 정적 static 와 비 정적 속성 을 주입 합 니 다.
저 희 는.properties 파일 에서 사용자 정의 설정 항목 을 사용 해 야 하 는 인 코딩 수요 가 많 습 니 다.전통 적 으로 Properties 대상 을 사용 하여 다음 과 같은 코드 를 사용 합 니 다.
이러한 방식 이 너무 유연 해서 우리 가 사용 하고 싶 지 않 은 설정 항목 도 추출 될 수 있 습 니 다.또한 jar 가방 에 있 는 설정 파일 을 사용 하지 않 고 우선 순 위 를 이용 하여 외 부 를 사용 할 때 직접 읽 는 방식 이 불편 하기 때문에@Value 방식 으로 사용 하 는 것 을 추천 합 니 다.
public class SysConfigUtil {
private static Properties props;
static {
try {
// TODO:
Resource resource = new ClassPathResource("/application.properties");
props = PropertiesLoaderUtils.loadProperties(resource);
} catch (IOException e) {
e.printStackTrace();
}
}
public static String getProperty(String key) {
return props == null ? null : props.getProperty(key);
}
}
아니면 방금 프로젝트 입 니까?@Value 를 사용 하여 프로그램 이 사용 하고 자 하 는 설정 항목 을 주입 하고 싶 지 않 으 면 주입 하지 않 습 니 다.이렇게 하면 설정 항목 을 제어 할 수 있 습 니 다.1.저 희 는.properties 파일 에 두 개의 사용자 정의 설정 항목 을 추가 합 니 다.
spring.application.name=tyh-demo-prop
server.port=10001
# , , ( )
#jasypt.encryptor.password=112233
#
spring.datasource.username=ENC(nm3F96GtUIwZUHzsP0Mp1A==)
spring.datasource.password=ENC(lmn7lAlePy1hZu505WO0xQ==)
#
#tyh.url.web.admin=http://www.admin.com
tyh.url.web.agent=http://www.agent.com
2.@Value 주입 은 정적 속성 에 도 비 정적 속성 을 줄 수 있 습 니 다.구체 적 으로 사용 장면 에 따라 스스로 결정 합 니 다.설정 항목 이 존재 하지 않 을 수도 있 고 기본 값 을 설정 하여 프로그램 이 시작 되 지 않도록 합 니 다.
@Component
public class SysConfig {
@Value("${spring.datasource.username}")
private String dbUsername;
@Value("${spring.datasource.password}")
private String dbPassword;
/*
( )
*/
//@Value key, , “:” , :
@Value("${tyh.url.web.admin:www.abc.com}")
private String urlAdmin;
//### get/set ###
/*
( set() )
*/
// @Component , set()
public static String urlAgent;
@Value("${tyh.url.web.agent:}")
private void setUrlAgent(String urlAgent) {
SysConfig.urlAgent = urlAgent;
}
}
3.사용 시 비 정적 속성 은 Autowired 주입 을 사용 하고 정적 속성 은 직접 값 을 추출 합 니 다.
// ( Autowired )
@Autowired
SysConfig sysConfig;
public void test() {
// ( )
String str = SysConfig.urlAgent;
}
@Value 를 사용 하여 설정 항목 을 주입 하여 사용 하 는 것 을 추천 합 니 다.아폴로 등 설정 관리 센터 에 추가 로 접속 하여 설정 을 통일 적 으로 관리 합 니 다.spring boot 프로젝트 application.properties 파일 저장 및 사용 소개 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 spring boot application.properties 파일 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 도 많은 지원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.