> Java > java지도 시간 > 본문

Spring Boot 시리즈의 속성 구성 및 사용자 정의 속성 구성에 대한 자세한 소개

黄舟
풀어 주다: 2017-07-24 14:16:27
원래의
1935명이 탐색했습니다.

스프링 부트를 사용하는 과정에서 해당 기능을 완료하려면 프로젝트에서 최소한의 구성만 필요하다는 것을 알 수 있습니다. 이는 pom.xml에 의존하는 각 스타터에 기본 구성이 있기 때문입니다. . , 이러한 기본 구성은 일반적인 기능 개발에 충분합니다.

사용자 정의 또는 기본 구성을 수정해야 하는 경우 spring boot는 application.properties에서 해당 구성을 추가하고 수정하기만 하면 됩니다. (application.properties의 기본 구성은 spring boot가 시작될 때 읽혀집니다.)

1. 기본 구성 수정

Example 1. spring boot가 웹 애플리케이션을 개발할 때 tomcat의 기본 시작 포트는 8080입니다. 수정이 필요한 경우 기본 포트인 경우 application.properties에 다음 레코드를 추가해야 합니다.

server.port=8888
로그인 후 복사
프로젝트를 다시 시작하면 시작 로그를 볼 수 있습니다. Tomcat이 포트에서 시작됨: 8888(http) 시작 포트는 8888이며 http에 액세스합니다. 브라우저의 ://localhost :8888 에서는 정상적으로 접속이 가능합니다.

예제 2, 스프링 부트 개발 시 데이터베이스 연결 정보 구성(여기에서는 com.alibaba의 druid가 사용됨), application.properties에 다음 레코드를 추가합니다.

druid.url=jdbc:mysql://192.168.0.20:3306/test
druid.driver-class=com.mysql.jdbc.Driver
druid.username=root
druid.password=123456
druid.initial-size=1
druid.min-idle=1
druid.max-active=20
druid.test-on-borrow=true
로그인 후 복사

위 두 예는 스타터에서 기본 설정을 수정하는 방법을 보여줍니다. 모듈 구성, ​​application.properties에서 수정해야 하는 구성을 추가하기만 하면 됩니다.

2. 사용자 정의 속성 구성

application.properties의 기본 구성을 수정하는 것 외에도 여기에서 사용자 정의 속성을 구성하고 엔터티 빈에 로드할 수도 있습니다.

1. application.properties에 사용자 정의 속성 구성 추가

com.sam.name=sam
com.sam.age=11
com.sam.desc=magical sam
로그인 후 복사

2. Bean 클래스 작성 및 속성 로드

Sam 클래스는 Spring이 시작될 때 클래스를 스캔하고 이를 Spring에 추가할 수 있도록 @Component 주석을 추가해야 합니다. 컨테이너.

첫 번째: 스프링에서 지원하는 @Value()를 사용하여 로드

package com.sam.demo.conf;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

/**
 * @author sam
 * @since 2017/7/15
 */
@Component
public class Sam {

    //获取application.properties的属性
    @Value("${com.sam.name}")
    private String name;

    @Value("${com.sam.age}")
    private int age;

    @Value("${com.sam.desc}")
    private String desc;
    
    //getter & setter
}
로그인 후 복사

두 번째: @ConfigurationProperties(prefix="")를 사용하여 접두사를 설정하고 속성에는 주석이 필요하지 않습니다.

package com.sam.demo.conf;

import org.springframework.stereotype.Component;

/**
 * @author sam
 * @since 2017/7/15
 */
@Component
@ConfigurationProperties(prefix = "com.sam")
public class Sam {

    private String name;

    private int age;

    private String desc;

    //getter & setter
}
로그인 후 복사

3. 컨트롤러에 샘빈을 주입해서 사용해보세요.

package com.sam.demo.controller;

import com.sam.demo.conf.Sam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author sam
 * @since 2017/7/14
 */
@RestController
public class IndexController {

    @Autowired
    private Sam sam;

    @RequestMapping("/index")
    public String index() {
        System.out.println(sam.getName() + " " + sam.getAge() + " " + sam.getDesc());
        return "index";
    }

}
로그인 후 복사
브라우저 접속: http://localhost:8080/index, 콘솔은 sam의 내용을 정상적으로 출력합니다.

3. application.properties 속성 구성에 대한 자세한 설명

1. 매개변수 참조 및 난수 방식 사용

application.properties에서는 다음과 같이 ${}를 통해 다른 속성의 값을 직접 참조할 수 있습니다.
com.sam.name=sam
com.sam.age=11
com.sam.desc=${name} is ${age} years old.
로그인 후 복사
애플리케이션에서 속성에서 난수를 구해야 하는 경우 다음과 같이 ${random}을 사용할 수 있습니다.
#获取随机字符串
com.sam.randomValue=${random.value}

#获取随机字符串:${random.value}
#获取随机int:${random.int}
#获取10以内的随机数:${random.int(10)}
#获取10-20的随机数:${random.int[10,20]}
#获取随机long:${random.long}
#获取随机uuid:${random.uuid}
로그인 후 복사

2. 다중 환경 구성

실제 개발에서는 다른 환경이 있을 수 있습니다. 개발 환경, 테스트 환경, 프로덕션 환경을 포함합니다. 데이터베이스 정보, 포트 구성, 로컬 경로 구성 등 관련 구성은 환경마다 다를 수 있습니다.

다른 환경으로 전환할 때마다 application.properties를 수정해야 한다면 작업이 매우 번거로울 것입니다. Spring Boot에서는 다중 환경 구성이 제공되므로 환경 전환이 쉽습니다.

application.properties와 동일한 디렉터리에 세 개의 새 파일을 만듭니다.

application-dev.properties      //开发环境的配置文件
application-test.properties     //测试环境的配置文件
application-prod.properties     //生产环境的配置文件
로그인 후 복사
위 세 파일은 각각 개발, 테스트 및 프로덕션의 구성 내용에 해당합니다. 다음 단계는 이러한 구성을 선택적으로 참조하는 방법입니다.

application.properties에 추가:

spring.profiles.active=dev
#引用测试的配置文件
#spring.profiles.active=test
#引用生产的配置文件
#spring.profiles.active=prod
로그인 후 복사
spring.profiles.active=dev를 추가하고 애플리케이션을 시작하면 dev의 구성 정보가 참조되는 것을 확인할 수 있습니다.
위 세 가지 구성 파일은 application-{profile}.properties 형식을 따르고 있으며 application.properties에 추가된 spring.profiles.active=dev의 dev가 바로 위 구성 파일의 프로필임을 알 수 있습니다. 특정 환경에 따라 즉시 전환됩니다.

애플리케이션 시작 명령으로 jar 패키지를 실행할 때 해당 구성을 지정할 수 있습니다.

java -jar demo-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev
로그인 후 복사

첨부: 구성 방법 및 우선순위

这些方式优先级如下:
a. 命令行参数
b. 来自java:comp/env的JNDI属性
c. Java系统属性(System.getProperties())
d. 操作系统环境变量
e. RandomValuePropertySource配置的random.*属性值
f. jar外部的application-{profile}.properties或application.yml(带spring.profile)配置文件
g. jar内部的application-{profile}.properties或application.yml(带spring.profile)配置文件
h. jar外部的application.properties或application.yml(不带spring.profile)配置文件
i. jar内部的application.properties或application.yml(不带spring.profile)配置文件
j. @Configuration注解类上的@PropertySource
k. 通过SpringApplication.setDefaultProperties指定的默认属性
로그인 후 복사

참고: 명령줄 매개변수 이 방법은 매개변수를 지정하여 애플리케이션을 시작하는 방법입니다. jar 패키지는 안전하지 않으므로 다음과 같이 애플리케이션 시작을 금지하도록 설정할 수 있습니다.

springApplication.setAddCommandLineProperties(false);

package com.sam.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
//        SpringApplication.run(DemoApplication.class, args);
        SpringApplication springApplication = new SpringApplication(DemoApplication.class);
        //禁止命令行设置参数
        springApplication.setAddCommandLineProperties(false);
        springApplication.run(args);
    }
}
로그인 후 복사

추가:

application.properties를 지원하는 것 외에도, Spring Boot의 구성은 application.yml도 지원합니다. 구성 방법은 다음과 같습니다.
application.properties 대신 새 application.yml을 만듭니다.
server:
  port: 9999

com:
  sam:
    name: sam
    age: 11
    desc: magical sam
로그인 후 복사
참고: 포트 중간에 공백이 있습니다: 9999. yml 구문의 경우 참조: yml 구성 파일 사용법

위 내용은 Spring Boot 시리즈의 속성 구성 및 사용자 정의 속성 구성에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿