springboot 핵심 기술 의 설정 파일 상세 설명 (1)

7173 단어 springboot
문법
      1. 1. Yml 가 무엇 입 니까?
               YAML 은 XML, JSON 과 유사 한 표기 성 언어 다.YAML 은 데이터 중심 이지 표지 언어 에 중점 을 두 는 것 이 아니 라 고 강조 했다.따라서 YAML 자체 의 정 의 는 비교적 간단 하여 '인성 화 된 데이터 형식 언어' 라 고 불 린 다.XML 과 같은 장점 이 있 지만 XML 보다 훨씬 간단 하고 민첩 하 다.
      1.2 작성 규범
         1.2.1 기본 데이터 형식 (글자 양): int, string, boolean 등
people:
   name:   
   age: 24
   isTeacher: true

          1. 들 여 쓰기 로 등급 관 계 를 나타 내 고 같은 등급 의 요소 가 왼쪽 에 정렬 되 며 들 여 쓰기 에는 스페이스 바 만 사용 할 수 있 고 Tab 키 를 사용 할 수 없습니다.
          2. 속성 명 과 속성 값 사 이 를 '빈 칸' 으로 구분 해 야 합 니 다. 그렇지 않 으 면 유효 하지 않 습 니 다.
          3. 속성 이름과 속성 수치 가 모두 대소 문자 에 민감 합 니 다.
          4. 속성 값 할당:
                       "": 작은 따옴표;문자열 에 있 는 특수 문 자 를 바 꾸 지 않 습 니 다. 특수 문 자 는 자신 이 표현 하고 자 하 는 의미 로 출력 합 니 다.
                       장삼 lisi" ;출력: 장삼 줄 바 꾼 후 lisi;
                      ‘’:작은 따옴표;전의 문자열 에 있 는 특수 문 자 를 사용 합 니 다. 작은 따옴표 를 사용 하면 상기 데 이 터 는 다음 과 같 습 니 다: 장 삼 lisi
         1.2.2 지도 대상 
            1. 방식 1:
 maps: {k1: obj1,
        k2: obj2}

            2. 방식 2:
 maps: 
       k1: obj1
       k2: obj2

          1.2.3 배열 (List, Set)
             1. 방식 1:
  list:
       - lisi
       - zhangsan
       - mark

              2. 방식 2:
  list: [lisi,zhangsan,mark]

         1.2.4 사용자 정의 인 스 턴 스 대상 Dog (name, age)
              1. 방식 1:
 dog:
       name:   
       age: 2

              2. 방식 2:
 dog: { name:   ,
       age: 2}
      

             메모: 대상 의 설정 방식 은 맵 과 같 습 니 다.
   1.3, springboot 기본 설정 파일
         springboot 기본 값 은 application. properties 나 application. yaml 파일 을 springboot 의 기본 시작 파일 로 사용 합 니 다.
        1. properties 파일 사용자 정의 실체 속성 형식
userinfo.account=itdragonBlog
userinfo.age=25
userinfo.active=true
userinfo.created-date=2018/03/31 16:54:30
userinfo.map.k1=v1
userinfo.map.k2=v2
userinfo.list=one,two,three
userinfo.position.name=Java   
userinfo.position.salary=19999.99

        2. Yml 형식 파일 사용자 정의 실체 속성 설정
people:
    name:   
    age: 24
    isTeacher: true
    maps:
       k1: obj1
       k2: obj2
    list:
       - lisi
       - zhangsan
       - mark
    dog:
       name:   
       age: 2
    last-name: zhangsan

2. springboot 에서 프로필 을 읽 는 두 가지 방식
       2.1, @ ConfigurationProperties 주석 읽 기 프로필
          1. 실체 류 구축
                People 실체 클래스
@Component
@ConfigurationProperties(prefix = "people")
public class People {

    private String name;

    private int age;

    private boolean isTeacher;

    private Map maps;

    private List list;

    private Dog dog;

    private String lastName;

                  개 실체 클래스
public class Dog {

    private String name;

    private int age;

         2 、 people 실체 클래스 앞 에 @ ConfigurationProperties 탭 추가
              @configurationProperties: springboot 에 게 이 클래스 의 모든 속성 과 프로필 의 설정 을 연결 하 라 고 알려 줍 니 다. prefix 의 값 은 설정 파일 의 하위 속성 과 실체 속성 을 일대일 로 표시 하 는 것 입 니 다.
         3. controller 류
@RestController
public class PeopleController {

    @Autowired
    People people;

    @RequestMapping("/people")
    public People getPeople(){
        return people;
    }

        4. 프로필 프로세서 추가: 알림 기능 설정
  
            org.springframework.boot
            spring-boot-configuration-processor
            true
        

       5. 테스트 결과
{"name":"  ","age":24,"maps":{"k1":"obj1","k2":"obj2"},"list":["lisi","zhangsan","mark"],"dog":{"name":"  ","age":2},"lastName":"zhangsan","teacher":true}

      2.2 @ value 탭 사용
        1. person 실체
public class People {

    //@value("${}")          :string,int,Boolean
    @Value("${people.name}")
    private String name;

//    @Value("#{24}")
    @Value("${people.age}")
    private int age;

//    @Value("#{true}")
    @Value("${people.isTeacher}")
    private boolean isTeacher;

    private Map maps;

    private List list;

    private Dog dog;

//    @Value("#{'zhangsan'}")
    @Value("${people.last-name}")
    private String lastName;

         2. 테스트 결과
{"name":"  ","age":24,"maps":null,"list":null,"dog":null,"lastName":"zhangsan","teacher":true}

         3. @ value (${}) 는 글자 액면가 만 가 져 올 수 있 습 니 다. bean, map, List 는 @ value (\ # {}) 를 사용 할 수 있 습 니 다. SpEL 표현 식 구현, 구체 적 으로 참고 가능
               https://blog.csdn.net/ya_1249463314/article/details/68484422
    2.3, @ ConfigurationProperties 와 @ value 의 대비
 
@ConfigurationProperties
@value
기능.
설정 파일 의 속성 대량 주입
하나하나 지정 하 다
느슨 한 귀속 (느슨 한 문법)
지지 하 다.
지지 하지 않 음
SpEL 표현 식
지지 하지 않 음
지지 하 다.
JSR 303 데이터 검증
지지 하 다.
지지 하지 않 음
복잡 한 형식 패키지 (예: Map)
지지 하 다.
지지 하지 않 음
            비 즈 니스 필드:
            1. 저 희 는 실체 중의 특정한 속성 값 만 가 져 오 려 면 @ value 를 사용 하 는 것 을 추천 합 니 다.
            2. javaBean 과 프로필 의 일대일 맵 을 실현 해 야 합 니 다. @ ConfigurationProperties 를 추천 합 니 다.
    2.4, @ ConfigurationProperties JSR 303 데이터 검증 사용
        1. people 실체 류
@Component
@ConfigurationProperties(prefix = "people")
@Validated
public class People {

    @Email
    private String name;

    private int age;

    private boolean isTeacher;

    private Map maps;

    private List list;

    private Dog dog;

    private String lastName;

        2. 테스트 오류
Binding to target org.springframework.boot.context.properties.bind.BindException: Failed to bind properties under 'people' to com.example.demo.entity.People failed:

    Property: people.name
    Value:   
    Origin: class path resource [application.yaml]:2:11
    Reason:              

        JSR 303 데이터 검증 바 인 딩 성공 을 증명 합 니 다.
 2.5, 느슨 한 귀속 @ value 테스트
      1. Yml 파일 설정
 last-name: zhangsan

       2. people 실체 클래스 에서 인용

    @Value("${lastName}")
    private String lastName;

       3. 테스트 결과 오류
 Could not resolve placeholder 'lastName' in value "${lastName}"

        @ value 태그 가 느슨 한 바 인 딩 을 지원 하지 않 음 을 증명 하 였 으 나, @ ConfigurationProperties 는 이러한 느슨 한 바 인 딩 을 지원 합 니 다.
      4. 주의: application. properties 와 application. yaml 가 동시에 존재 할 때 application. properties 의 우선 순 위 는 application. yaml 보다 크 고 상호 보완 설정 을 형성 해 야 합 니 다.

좋은 웹페이지 즐겨찾기