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 파일 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 도 많은 지원 바 랍 니 다!

좋은 웹페이지 즐겨찾기