몇 분이면 SpringBoot 프레임워크의 이론적 지식을 빠르게 이해할 수 있습니다!

1. 스프링부트란?

SpringBoot는 실제로 Spring의 하위 프로젝트입니다. Spring의 개발 난이도를 단순화하고, 버릴 수 있는 모든 xml 구성 파일을 버리고, 다양한 스타터를 제공하여 프로그래머가 더 빠르게 시작하고 개발 시간을 절약할 수 있도록 합니다.

2. 스프링부트의 장점

SpringBoot는 실제로 Spring의 단점을 개선하고 최적화합니다.컨벤션이 구성보다 낫다는 아이디어를 기반으로 개발자는 구성 파일과 비즈니스 로직 사이를 전환할 필요가 없으며 누구나 로직 비즈니스 코드에 전념할 수 있습니다. 개발 효율성을 크게 향상시킬 수 있지만 프로젝트 주기를 어느 정도 단축할 수 있습니다.

(1) 버전 잠금

Maven이 충돌하기 쉬운 버전에 의존하는 문제를 해결하고 일반적으로 사용되고 테스트된 많은 버전을 수집합니다.

(2) 시작 종속성

함수를 개발할 때 여러 jar 패키지를 통합하는 문제를 해결하고 일반적으로 사용되는 jar 패키지를 수집합니다.

(3) 자동 구성

너무 많은 통합 프레임워크 또는 기술 구성 파일의 문제를 해결하고 합의된 모든 기본 구성을 수집합니다.

(4) 내장 톰캣

내장된 tomcat을 통해 외부 tomcat을 도입하지 않고 javaee 프로젝트를 직접 실행할 수 있습니다.

요약: 누구나 SpringBoot를 프로젝트 구축을 위한 스캐폴딩이라고 부를 것입니다. 가장 중요한 것은 거대한 Spring 프로젝트를 신속하게 구축하고 가능한 한 모든 xml 구성 파일을 줄여서 즉시 사용할 수 있고 빠르게 시작할 수 있도록 하여 우리가 비즈니스에 더 관심을 가질 수 있도록 하는 것입니다. 구성 파일.

3. SpringBoot 프로젝트 실행 방법

(1) maven 플러그인을 사용하여 시작

(2) jar 패키지로 만들고 실행 시작

(3) 메인 메소드를 직접 실행하여 실행 시작

4. SpringBoot의 스타터 스타터

4.1 스타터란?

스타터 스타터는 스타터를 통해 다른 기술을 통합하여 해당 개발 및 운영 환경을 제공할 수 있습니다.

예: pom 파일에서 웹 개발에 spring-boot-starter-web을 사용할 수 있습니다. 이 외에도 redis, mybatis 등이 있습니다.

4.2 스타터의 실행 원리

(1) SpringBoot 프로젝트는 시작할 때 jar 패키지의 Spring.factories 파일을 스캔합니다.

(2) 파일의 설정에 따라 자동 설정 클래스를 불러오는데 파일 형식은 key=value 형식이고, Spring에서 불러와야 할 여러 클래스들이 값에 정의되어 있다.

(3) Spring은 이러한 자동 구성 클래스를 로드하고 Spring은 이를 읽은 후 이러한 클래스의 객체를 생성한 다음 모두 IOC 컨테이너에 넣습니다. 나중에 필요할 때 Spring 컨테이너에서 직접 얻을 수 있습니다.

4.3 SpringBoot에서 일반적으로 사용되는 스타터

(1) 스프링 부트 스타터 웹

(2) 스프링 부트 스타터-jdbc

(3) spring-boot-starter-jpa

(4) 스프링 부트 스타터 레디스

(5) 스프링 부트 스타터 테스트

...

5. 스프링 부트 동작 원리

5.1 SpringApplication 클래스의 역할과 run() 메소드의 역할

(1) SpringApplication은 다른 모든 프레임워크의 시작 클래스를 통합하고 이 클래스를 실행하기만 하면 모든 통합이 완료될 수 있습니다.

(2) run 함수를 호출하고, 현재 클래스의 바이트코드를 전달하고, main 메서드의 매개변수 args를 전달합니다. 여기에 언급된 바이트코드는 실제로 @SpringBootApplication 주석을 전달하기 위해 전달됩니다.

(3) 현재 시작 클래스의 핵심 정보를 얻고 IOC 컨테이너를 생성합니다.

5.2 현재 시작 클래스 @SpringBootApplication에 대한 자세한 분석

실행 함수에 의해 전달된 현재 시작 클래스 바이트코드는 실제로 @SpringBootApplication입니다. 이 주석의 소스 코드를 클릭하면 네 가지 유형의 주석이 포함된 것을 볼 수 있습니다.

(1) jdk 네이티브 주석

 @Target: 현재 주석의 사용 범위 선언

 @Rerention: 선언 라이프 사이클

@Documented: 문이 doc 파일로 패키징되면 주석을 추가해야 합니다.

@Inherited: 하위 클래스가 상위 클래스의 주석을 표시할지 여부를 선언합니다.

(2) @SpringBootConfiguration

 주석의 소스 코드를 클릭하면 이 클래스가 xml 구성 파일과 동일한 구성 클래스임을 정의하는 @Configuration이 본질임을 알 수 있습니다.

@Configuration을 언급할 때 그의 파트너인 @bean을 언급해야 하는데, 이 두 주석을 함께 사용하여 간단한 Spring 구성 클래스를 생성하고 해당 xml 구성 파일을 대체하는 데 사용할 수 있습니다. IOC 컨테이너 생성으로 이해할 수 있습니다.

(3)@컴포넌트스캔

이 주석은 Spring 구성 파일의 @ComponentScan에 해당하며 실제로 요구 사항을 충족하는 구성 요소 또는 빈 정의를 자동으로 스캔하고 로드합니다. 마지막으로 이러한 빈 정의는 IOC 컨테이너에 로드됩니다.

필요한 경우 basePackages를 통해 @ComponentScan 자동 스캐닝 범위를 세밀하게 커스터마이즈할 수 있으며, 지정하지 않으면 기본적으로 @ComponentScan이 위치한 클래스 아래의 패키지와 서브패키지를 스캔한다. 기본적으로 basePackages가 지정되지 않아 루트 패키지 아래의 모든 패키지를 스캔할 수 있기 때문에 SpringBoot의 시작은 루트 패키지 아래에 배치하는 것이 가장 좋습니다.

(4)@EnableAutoConfigration

(1) @EnableAutoConfiguration의 핵심은 @Import인데 @Import 어노테이션을 사용하여 자동 설정 조건을 만족하는 모든 빈 정의를 IOC 컨테이너에 로드한다. @EnableAutoConfiguration은 클래스 경로의 jar 종속성을 기반으로 프로젝트를 자동으로 구성합니다.

(2) SpringBoot는 자동 구성을 어떻게 완료합니까?

SpringBoot 자동 구성에 대한 주석, @EnableAutoConfiguration

사용할 때 시작 클래스에 @SpringBootConfiguration을 추가합니다. 이 주석은 @EnableAutoConfiguration을 포함하는 복합 주석입니다.

@EnableAutoConfiguration에 @Import 어노테이션이 있는데, 이는 실제로 자동 구성을 완료하기 위한 핵심입니다.

· @Import는 가져온 모든 jar에서 spring.factories 파일을 스캔하는 selectImports 메서드를 제공하는 AutoConfigurationImportSelector 클래스를 가져옵니다. 구문 분석 파일에서 class key=value를 자동으로 구성하고 목록에 있는 모든 클래스를 생성한 다음 일치하는 Spring 컨테이너에 넣습니다.

6. SpringBoot 핫 배포

최신 배포를 완료하려면 spring-boot-starter-devtools 스타터를 도입하기만 하면 됩니다.

7. SpringBoot의 구성 파일

7.1 두 가지 범주

application.yml 또는 application.properties

bootstrap.yml 또는 bootstrap.properties

7.2 차이점

(1) 부트스트랩은 애플리케이션 구성 파일보다 먼저 로드되는 ApplicationContext 클래스에 의해 로드됩니다.

(2) 부트스트랩 파일의 속성은 수정할 수 없습니다.

(3) 적용: Springboot 프로젝트 자동 구성

(4) 부트스트랩: 클라우드 구성 구성 센터를 사용할 때 연결 구성 센터의 구성 속성을 로드해야 하는 경우 부트스트랩을 사용하여 완료할 수 있습니다.

덮어쓸 수 없는 일부 데이터를 로드하고 일부 암호화 또는 해독된 데이터를 로드합니다.

7.3 구성 파일을 읽는 방법

(1) 기본 구성 파일 읽기

키에 해당하는 값을 얻을 수 있도록 Environment 클래스를 주입하고 environment.getProperty(속성의 키)를 사용해야 합니다.

@Value(${key.value}) 직접 읽기

(2) 사용자 지정 구성 파일 읽기

사용자 지정 구성 파일의 접미사는 .properties여야 합니다.

        사용자 지정 구성 파일에 해당하는 Java 클래스를 작성하고 클래스에 주석을 추가합니다.

        @ConfigurationProperties("접두사")

        @PropertySource("지정된 구성 파일")

        @컴포넌트 패키지 스캔

읽기 방법은 기본 구성 파일 읽기와 동일합니다.

8. SpringBoot에서 지원하는 로그 파일

(1) log4j

(2) 로그백

(3) 자바 유틸리티 로깅

9. 일반적으로 사용되는 SpringBoot 주석

@SpringBootApplication: @SpringBootApplicationConfiguration, @EnableAutoConfiguration 및 @ComponentScan의 세 가지 핵심 클래스를 캡슐화하여 프로그래머의 구성 시간을 크게 절약하며 이는 SpringBoot의 핵심 아이디어이기도 합니다.

@MapperScan: spring-boot가 mybatis 컴포넌트를 지원한다는 주석으로, 이 주석을 통해 mybatis 인터페이스 클래스의 경로를 지정하여 mybaits 인터페이스 스캔을 완료합니다.

@RestController: @Controller와 @ResponseBody의 조합으로 클래스에 주석을 추가하면 @ResponseBody를 추가할 필요가 없다.

@RequestMapping: 메서드에서 요청 경로를 정의합니다.

@GetMapping, @PostMapping, @PutMapping, @DeleteMapping: 위의 RequestMapping과 연동하여 사용되며, Rest 스타일로 통일되어 보다 명확한 경로를 지정할 수 있다.

@PathVaribale: 경로 변수 주석, {}를 사용하여 경로의 변수 이름을 정의합니다.

@Service: 비즈니스 계층 주석을 표시하는 데 사용됩니다.

@Component: Spring의 주석 기능과 동일하며 IOC 컨테이너에 주입됩니다.

@EnableScheduling: @Import를 통해 Spring 스케줄링 프레임워크의 관련 빈 정의를 IOC 컨테이너에 로드합니다.

추천

출처blog.csdn.net/lf21qp/article/details/131375082