봄에 속성을 이해하지 못하는 개발자는 주로 구성 방법과 많은 사용 방법이 있기 때문에 약간 혼란 스러울 수 있습니다.
이 기사는 원칙 분석 또는 소스 코드 분석 기사가 아니지만 독자가 스프링 속성을 더 잘 이해하고 사용하도록 도울 수 있기를 바랍니다.
속성 사용
이 기사의 모든 독자들은 Spring을 사용했습니다. 먼저 속성이 어떻게 사용되는지 살펴 보겠습니다. 봄에는 일반적으로 사용되는 몇 가지 방법이 있습니다.
1. XML 구성 파일에서 사용하십시오
즉, $ {}의 값이 자동으로 대체됩니다.
<bean id = "xxx"> <property name = "url"value = "$ {javadoop.jdbc.url}" /> < /bean>2. @Value Injection을 통해 사용하십시오
@Value ( "$ {javadoop.jdbc.url}") 개인 문자열 URL;3. 환경을 통해 얻으십시오
이 방법에서는주의를 기울여야 할 것이 있습니다. 모든 구성 방법이 환경 인터페이스를 통해 속성 값을 얻는 지원은 아닙니다. 개인 테스트는 @propertysource 주석을 사용할 때만 사용할 수 있습니다. 그렇지 않으면 Null이됩니다. 구성 방법에 대해서는 바로 아래에 대해 이야기하겠습니다.
@autowiredPrivate Environment Env; public String geturl () {return env.getProperty ( "javadoop.jdbc.url");}Spring Boot Application.Properties에 등록 된 경우 괜찮습니다.
속성 구성
이전에 구성된 속성을 사용하는 방법을 이전에 언급 했으므로 구성하는 방법은 무엇입니까? Spring은 많은 구성 방법을 제공합니다.
1. XML을 통해 구성하십시오
다음은 가장 일반적으로 사용되는 구성 방법이며 많은 프로젝트가 다음과 같이 작성됩니다.
<문맥 : Property-Place Holder Location = "ClassPath : Sys.Properties" />
2. @PropertySource를 통해 구성하십시오
이전 XML 구성은 매우 일반적이지만 모든 XML 구성 파일을 제거하려는 경우 다음 방법을 사용해야합니다.
@PropertySource ( "ClassPath : Sys.Properties")@ConfigurationPublic 클래스 JavadoopConfig {}@PropertySource는 @configuration과 함께 사용해야하므로 자세한 내용은 아닙니다.
3. PropertyPlaceHolderConfigurer
독자들이 이것을 보았다면, 놀랐는지는 중요하지 않습니다. 이것이 봄 3.1 이전에 사용 된 방법입니다.
<ean> <property name = "locations"> <slest> <value> classpath : sys.properties </value> </list> </property> <property name = "incoreUnresolvable placeholders"value = "true"/> <!-일부 속성을 여기에서 구성 할 수 있습니다-> </bean>.
물론 해당 Java 구성 버전을 사용할 수도 있습니다.
@BeanPublic PropertyPlaceHolderConfigurer Propertiess () {PropertyPlaceHolderConfigurer PPC = New PropertyPlaceHolderConfigurer (); Resource [] resources = new ClassPathResource [] {New ClassPathResource ( "Sys.Properties")}; ppc.setlocations (자원); ppc.setignoreunresolvable placeholders (true); 반환 ppc;}4. PropertySourcesPlaceHolderConfigurer
Spring 3.1이 시작되면 PropertySourcesPlaceHolderConfigurer가 소개되었으며 이는 새로운 클래스입니다. 이전 PropertyPlaceHolderConfigurer의 이름에 추가 소스가 있으며 그에 속하는 패키지는 다릅니다. 스프링 컨텍스트 패키지에 있습니다.
구성에는 차이가 없습니다.
<ean> <property name = "locations"> <slest> <value> classpath : sys.properties </value> </list> </property> <property name = "incoreUnresolvable placeholders"value = "true"/> <!-일부 속성을 여기에서 구성 할 수 있습니다-> </bean>.
Java 구성 버전도 있습니다.
@BeanPublic PropertySourcesPlaceHolderConfigurer Properties () {PropertySourcesPlaceHolderConfigurer PSPC = New PropertySourcesPlaceHolderConfigurer (); Resource [] resources = new ClassPathResource [] {New ClassPathResource ( "Sys.Properties")}; pspc.setlocations (자원); pspc.setignoreunresolvable placeholders (true); 반환 pspc;}스프링 부츠 관련
Spring Boot는 정말 좋은 일이며 상자에서 사용하는 것이 좋습니다. 다음은 관련 내용에 대한 간단한 소개입니다.
스프링 부트 프로젝트를 신속하게 생성하십시오 : https://start.spring.io/
application.properties
각 프로젝트에는 기본적으로 application.properties 파일이 있습니다. 이 구성 파일은 앞에서 언급했듯이 등록 할 필요가 없습니다. Spring Boot는 자동으로 등록하는 데 도움이됩니다.
물론, 이름을 변경하고 시작할 때 파일 이름을 지정할 수 있습니다.
java -dspring.config.location = classpath : sys.properties -jar app.jar
응용 프로그램-{env} .properties
다른 환경에 대해 다른 구성을 지정하기 위해이를 사용합니다.
예를 들어, 테스트 환경 및 생산 환경의 데이터베이스 연결 정보는 다릅니다.
따라서 application.properties를 기반으로 환경 관련 정보를 구성하기 위해 새로운 응용 프로그램 dev.properties 및 applicationprd.properties를 만들어 시작할 때 환경을 지정해야합니다.
java -dspring.profiles.active = prd -jar app.jar
결과적으로 Application.Properties 및 Application-Prd.Properties 파일의 구성이 등록됩니다. 중복 키가 있으면 Application PRD.Properties 파일의 우선 순위가 높습니다.
@ConfigurationProperties
이 주석은 스프링 부팅에서만 사용할 수 있습니다.
이 주석을 사용하지 않더라도 오픈 소스 프로젝트에서 이것을 볼 수 있습니다. 다음은 간단한 소개입니다.
더 직관적으로 예를 들어 봅시다. 앞에서 언급했듯이 구성 파일의 다음 정보를 작성하면 Application.Properties에 작성하거나 첫 번째 섹션에 소개 된 메소드를 사용할 수 있습니다.
javadoop.database.url = jdbc : mysql : javadoop.database.username = adminjavadoop.database.password = admin123456
Java 파일 :
@configuration@configurationProperties (prefix = "javadoop.database") 공개 클래스 데이터베이스 {String URL; 문자열 사용자 이름; 문자열 비밀번호; // getters and setters}이러한 방식으로, 유형 데이터베이스의 Bean은 스프링 컨테이너에 자동으로 등록되며 속성이 설정됩니다.
시작 중에 속성 값을 동적으로 수정합니다
나는 이것이 너무 많은 소개가 필요하다고 생각하지 않으며, Spring Boot를 사용하는 사람들은 기본적으로 그것을 알아야합니다.
속성 구성에는 재정의 순서가 있습니다. 즉, 동일한 키가 나타나면 값이 우선합니다.
시작 매개 변수> 응용 프로그램-{env} .properties> application.properties
매개 변수 시작 속성을 동적으로 설정합니다.
java -djavadoop.database.password = admin4321 -jar app.jar
또한 시스템 환경 변수를 사용하여 속성을 설정하고 랜덤 숫자를 지정하는 등을 설정할 수도 있지만 실제로는 매우 유연하지만 쓸모가 없으므로 소개하지 않습니다.
요약
독자가 스프링 속성에 대한 더 깊은 이해를 원한다면 스프링 환경 인터페이스와 관련된 소스 코드를 이해해야합니다. 관심있는 독자는 소스 코드를 통해 검색하는 것이 좋습니다.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.