속성 구성에 대한 자세한 소개
SpringBoot는 대부분의 수동 구성을 제거하지만 일부 특정 상황에서는 여전히 수동 구성을 수행해야 합니다. SpringBoot는 application.properties 구성 파일을 제공하여 일부 세 번째를 포함하여 특정 생산 상황에 맞게 수정되었습니다. -물론 파티 구성. 거의 모든 구성은 SpringBoot에 의해 자동으로 로드되는 application.peroperties 파일에 기록될 수 있으므로 수동으로 로드하는 수고를 덜 수 있습니다. 그러나 실제로 구성 파일을 사용자 정의하는 경우가 많으므로 이를 수동으로 로드해야 합니다. SpringBoot는 이러한 파일을 자동으로 인식하지 않습니다.
1. 구성 파일 형식
SpringBoot는 yml 파일과 속성 파일의 두 가지 형식을 인식할 수 있습니다. 두 파일 모두 SpringBoot에서 사용할 수 있습니다. 그러나 사용자 정의 구성 파일인 경우에는 속성 형식 파일을 사용하는 것이 가장 좋습니다. 왜냐하면 SpringBoot는 아직 yml 형식 파일을 수동으로 로드하는 기능을 제공하지 않기 때문입니다(여기서는 주석 방법 참조).
SpringBoot가 자동으로 로드하려면 application.properties 구성 파일이 지정된 위치인 src/main/resource 디렉터리에 있어야 합니다. 일반적으로 사용자 정의된 구성 파일도 이 디렉터리에 있습니다.
2. 구성 파일 로드
로드는 파일을 Spring 컨테이너로 읽는 것을 의미합니다. 더 정확하게 말하면 각 구성 항목을 Spring 컨텍스트 컨테이너에 로드하여 즉시 액세스할 수 있다는 의미입니다.
SpringBoot 프로젝트가 시작되면 application.properties 구성 파일이 자동으로 로드됩니다. 내부 관련 설정은 SpringBoot 기본 해당 설정을 자동으로 재정의하며 모든 구성 항목은 Spring 컨테이너에 저장됩니다.
1-공개 구성 파일: application.properties
1 donghao.name=唯一浩哥2 donghao.sex=男3 donghao.age=80
사용자 정의된 xxx.properties 구성 파일은 SpringBoot에 의해 자동으로 로드되지 않으며 수동으로 로드해야 합니다. 여기서 수동 로드는 일반적으로 주석 방법을 나타냅니다. 오늘 우리의 핵심 사항 중 하나인 사용자 정의 속성 파일을 로드하기 위한 주석: @PropertySource("classpath:xxx.properties")가 포함됩니다. 이 주석은 특별히 지정된 위치에 속성 파일을 로드하는 데 사용됩니다. 이전 명령문이 있도록 위치 yml 파일의 주석을 지정합니다.
2-사용자 정의 구성 파일: donghao.properties
1 donghao1.name=动画2 donghao1.sex=女3 donghao1.age=22
其实无论对于哪里的properties文件,当我们需要使用其中配置内容的时候,就在当前类的顶部加注该注解,将该配置文件加载到内存,这些配置文件一次加载即可多次使用。
3、配置项的使用
配置项的使用其实很简单,只要是加载到Spring容器中的配置项都可以直接使用@Value("${key}")的方式来引用,一般将其配置在字段顶部,表示将配置项的值赋值给该字段。
当然更多的情况是将这些配置项与一个JavaBean绑定起来使用,这样绑定一次,我们就可以随时使用。这里涉及到两种情况,一种是将application.properties中的配置与JavaBean绑定,一种是将自定义配置文件中的配置与Javabean绑定。
第一种:applicaiton.properties属性绑定JavaBean
这种情况相对简单(因为application.properties文件会被自动加载,也就是说配置项会被自动加载到内存,到Spring容器之中,省去了手动加载的配置),然后我们在要与属性绑定的JavaBean的类定义顶部加@Component注解和@ConfigurationProperties(prefix="key")注解,前者的目的是为了这个JavaBean可以被SpringBoot项目启动时候被扫描到并加载到Spring容器之中,重点是后者,这个注解一般不是单独使用的,他一般与后面要说的@EnableConfigurationProperties(JavaBean.class)配合使用,但是二者并非使用在同一位置,@ConfigurationProperties(prefix="key")注解加注在JavaBean类定义之上,按字面可以理解为属性配置注解,更直接点的说法就是属性绑定注解,官方解释是:如果想要绑定或者验证一些来源自.properties文件中的额外属性时,你可以在一个标注的@Configuration的类的注有@Bean注解的方法或者一个类之上加注这个注解。我们完全可以将其理解为绑定专用注解。它的作用就是将指定的前缀的配置项的值与JavaBean的字段绑定,这里要注意,为了绑定的成功,一般将字段的名称与配置项键的最后一个键名相同,这样整个键在去掉前缀的情况下就和字段名称一致,以此来进行绑定。
第二种:自定义配置的属性绑定JavaBean
这种情况与之前的基本相同,只是不能自动加载,需要手动加载,在JavaBean之上加上之前介绍的@PropertySource注解进行配置文件加载。还有一点就是将@Component改为@Configuration,为什么这么做呢?
@Configuration注解的底层就是@Component,但是二者意义不同,@Configuration注解侧重配置之意,@Component侧重组件之意,当然配置也是项目组件之一,在这里我们要将配置文件属性与JavaBean绑定,当然更侧重配置之意。
将配置与JavaBean绑定之后,我们就可以通过JavaBean来获取配置的内容,而且JavaBean已经被@Component注解或者@Configuration注解加载到Spring容器,我们可以使用自动注入的方式在其他类中随便使用。
这里要注意一点:当我们在某个类中要使用这个JavaBean时,需要在这个类中指定这个JavaBean的类型,这个指定也要使用注解来制定,正是之前介绍的@EnableConfigurationProperties注解,这个注解与@ConfigurationProperties注解配套使用。官方给出的解释:这个注解是对@ConfigurationProperties的有效支持。标注有@ConfigurationProperties注解的Beans可以被使用标准的方式注册(使用@Bean注解),或者,为了方便起见,直接用使用@EnableConfigurationProperties指定注册。意思是这个注解提供了一种方便直接的注册Bean的方式。
3-绑定JavaBean:Donghao.java
1 package com.donghao.model; 2 3 import org.springframework.boot.context.properties.ConfigurationProperties; 4 import org.springframework.context.annotation.Configuration; 5 import org.springframework.context.annotation.PropertySource; 6 7 @Configuration 8 @PropertySource("classpath:donghao.properties") 9 @ConfigurationProperties(prefix="donghao1")10 public class Donghao {11 private String name;12 private String sex;13 private String age;14 public String getName() {15 return name;16 }17 public void setName(String name) {18 this.name = name;19 }20 public String getSex() {21 return sex;22 }23 public void setSex(String sex) {24 this.sex = sex;25 }26 public String getAge() {27 return age;28 }29 public void setAge(String age) {30 this.age = age;31 }32 }
4-定义控制器:DonghaoController
1 package com.donghao.controller; 2 3 import org.springframework.beans.factory.annotation.Autowired; 4 import org.springframework.beans.factory.annotation.Value; 5 import org.springframework.boot.context.properties.EnableConfigurationProperties; 6 import org.springframework.web.bind.annotation.RequestMapping; 7 import org.springframework.web.bind.annotation.RestController; 8 9 import com.donghao.model.Donghao;10 11 @RestController12 @RequestMapping("/donghao")13 @EnableConfigurationProperties(Donghao.class)14 public class DonghaoController {15 16 @Autowired17 Donghao donghao;18 19 @Value("${donghao.name}")20 private String name;21 22 @Value("${donghao.sex}")23 private String sex;24 25 @Value("${donghao.age}")26 private String age;27 28 29 @RequestMapping("/hello")30 public String hello(){31 return "我的名字叫"+name+",我是"+sex+"生,今年"+age+"岁了!";32 }33 34 @RequestMapping("/ss")35 public String ss(){36 return donghao.getName()+donghao.getSex()+donghao.getAge();37 }38 }
5-定义启动入口类:DonghaoApplication.java
1 package com.donghao; 2 3 import org.springframework.boot.SpringApplication; 4 import org.springframework.boot.autoconfigure.SpringBootApplication; 5 6 @SpringBootApplication 7 public class DonghaoApplication { 8 9 public static void main(String[] args) {10 11 SpringApplication.run(DonghaoApplication.class, args);12 13 }14 15 }
프로그램을 시작한 후 브라우저는 http://localhost:8080/donghao/hello에 액세스하고 결과는 다음과 같습니다.
브라우저는 http://localhost:8080/donghao/ss
에 액세스합니다.
Me 여기서 로딩과 사용은 관련이 없다는 점을 강조하는 것이 중요합니다. 로딩의 목적은 사용이지만 로딩과 사용은 밀접한 관련이 없으므로 로딩 프로세스를 비교해야 합니다. 사용된 프로세스는 서로 다른 주석에 해당하며 각각 고유한 목적과 기능을 가지고 있습니다. 단 하나의 @PropertySource 주석이면 충분합니다. , 사용 주석에 대해 걱정할 필요가 없습니다. 이를 사용해야 하는 경우 다양한 사용 방법을 선택할 수 있습니다. 직접 사용하는 경우 이 주석을 직접 로드할 수 있습니다. Spring 컨테이너에 속성 구성의 값이 지정된 필드에 할당됩니다. 물론 JavaBean을 바인딩하는 방법을 사용할 수도 있습니다.
또 한 가지 주의할 점은 공개 구성 파일 application.properties와 사용자 정의 구성 파일 xxx.properties에서 동일한 구성 항목에 대해 서로 다른 값을 구성하면 안 된다는 점입니다. 공개 구성 파일의 우선순위가 가장 높고 구성 파일에 내용을 정의하면 공용 구성 파일의 특정 구성이 시작 시 Spring 컨테이너에 로드되고 동일한 이름의 구성 항목이 로드됩니다. 다른 사용자 정의 구성 파일에는 두 가지 값이 서로 다르지만 시스템은 두 가지의 우선 순위를 확인하여 더 높은 사람이 남고 더 낮은 사람이 이동하며 최종적으로 사용자 정의 구성 파일의 값이 유효하지 않습니다.
위 내용은 속성 구성에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Jasypt 소개 Jasypt는 개발자가 최소한의 노력으로 프로젝트에 기본 암호화 기능을 추가할 수 있게 해주며 암호화 작동 방식에 대한 깊은 이해가 필요하지 않은 단방향 및 양방향 암호화에 대한 높은 보안을 제공합니다. 표준 기반 암호화 기술. 비밀번호, 텍스트, 숫자, 바이너리 암호화... Spring 기반 애플리케이션, 개방형 API와의 통합에 적합하며 모든 JCE 공급자와 함께 사용할 수 있습니다... 다음 종속성을 추가합니다: com.github.ulisesbocchiojasypt-spring-boot-starter2. Jasypt의 이점은 코드가 유출되더라도 데이터 소스를 보장할 수 있어 시스템 보안을 보호합니다.

1. Redis는 분산 잠금 원칙과 분산 잠금이 필요한 이유를 구현합니다. 분산 잠금에 대해 이야기하기 전에 분산 잠금이 필요한 이유를 설명해야 합니다. 분산 잠금의 반대는 독립형 잠금입니다. 다중 스레드 프로그램을 작성할 때 공유 변수를 동시에 작동하여 발생하는 데이터 문제를 방지하기 위해 일반적으로 잠금을 사용하여 공유 변수를 상호 제외합니다. 공유 변수의 사용 범위는 동일한 프로세스에 있습니다. 동시에 공유 리소스를 운영해야 하는 여러 프로세스가 있는 경우 어떻게 상호 배타적일 수 있습니까? 오늘날의 비즈니스 애플리케이션은 일반적으로 마이크로서비스 아키텍처입니다. 이는 하나의 애플리케이션이 여러 프로세스를 배포한다는 의미이기도 합니다. 여러 프로세스가 MySQL에서 동일한 레코드 행을 수정해야 하는 경우 잘못된 작업으로 인해 발생하는 더티 데이터를 방지하려면 배포가 필요합니다. 현재 소개할 스타일은 잠겨 있습니다. 포인트를 얻고 싶다

Springboot가 파일을 읽지만 jar 패키지로 패키징한 후 최신 개발에 액세스할 수 없습니다. springboot가 파일을 jar 패키지로 패키징한 후 파일을 읽을 수 없는 상황이 발생합니다. 그 이유는 패키징 후 파일의 가상 경로 때문입니다. 유효하지 않으며 읽기를 통해서만 액세스할 수 있습니다. 파일은 리소스 publicvoidtest(){Listnames=newArrayList();InputStreamReaderread=null;try{ClassPathResourceresource=newClassPathResource("name.txt");Input 아래에 있습니다.

Springboot+Mybatis-plus가 다중 테이블 추가 작업을 수행하기 위해 SQL 문을 사용하지 않을 때 내가 직면한 문제는 테스트 환경에서 생각을 시뮬레이션하여 분해됩니다. 매개 변수가 있는 BrandDTO 개체를 생성하여 배경으로 매개 변수 전달을 시뮬레이션합니다. Mybatis-plus에서 다중 테이블 작업을 수행하는 것은 매우 어렵다는 것을 Mybatis-plus-join과 같은 도구를 사용하지 않으면 해당 Mapper.xml 파일을 구성하고 냄새나고 긴 ResultMap만 구성하면 됩니다. 해당 SQL 문을 작성합니다. 이 방법은 번거로워 보이지만 매우 유연하며 다음을 수행할 수 있습니다.

SpringBoot와 SpringMVC는 모두 Java 개발에서 일반적으로 사용되는 프레임워크이지만 둘 사이에는 몇 가지 분명한 차이점이 있습니다. 이 기사에서는 이 두 프레임워크의 기능과 용도를 살펴보고 차이점을 비교할 것입니다. 먼저 SpringBoot에 대해 알아봅시다. SpringBoot는 Spring 프레임워크를 기반으로 하는 애플리케이션의 생성 및 배포를 단순화하기 위해 Pivotal 팀에서 개발되었습니다. 독립 실행형 실행 파일을 구축하는 빠르고 가벼운 방법을 제공합니다.

1. RedisAPI 기본 직렬화 메커니즘인 RedisTemplate1.1을 사용자 정의합니다. API 기반 Redis 캐시 구현은 데이터 캐싱 작업에 RedisTemplate 템플릿을 사용합니다. 여기서 RedisTemplate 클래스를 열고 클래스의 소스 코드 정보를 봅니다. 키 선언, 값의 다양한 직렬화 방법, 초기 값은 비어 있음 @NullableprivateRedisSe

이 글에서는 dubbo+nacos+Spring Boot의 실제 개발에 대해 이야기하기 위해 자세한 예제를 작성하겠습니다. 이 기사에서는 이론적 지식을 너무 많이 다루지는 않지만 dubbo를 nacos와 통합하여 개발 환경을 신속하게 구축하는 방법을 설명하는 가장 간단한 예를 작성합니다.

프로젝트에서는 일부 구성 정보가 필요한 경우가 많습니다. 이 정보는 테스트 환경과 프로덕션 환경에서 구성이 다를 수 있으며 실제 비즈니스 상황에 따라 나중에 수정해야 할 수도 있습니다. 이러한 구성은 코드에 하드 코딩할 수 없습니다. 예를 들어 이 정보를 application.yml 파일에 작성할 수 있습니다. 그렇다면 코드에서 이 주소를 어떻게 얻거나 사용합니까? 2가지 방법이 있습니다. 방법 1: @Value 주석이 달린 ${key}를 통해 구성 파일(application.yml)의 키에 해당하는 값을 가져올 수 있습니다. 이 방법은 마이크로서비스가 상대적으로 적은 상황에 적합합니다. 프로젝트, 업무가 복잡할 때는 논리
