Spring Boot는 Spring 오픈 소스 조직의 하위 프로젝트입니다. Spring 구성 요소에 대한 원스톱 솔루션입니다. 주로
Spring 사용의 어려움을 단순화하고 무거운 구성을 절약하며 개발자가 얻을 수 있도록 다양한 런처를 제공합니다. 빨리 시작했습니다.
빠른 개발, 신속한 통합, 단순화된 구성, 내장된 서비스 컨테이너
SpringBoot는 빠르게 개발된 Spring 프레임워크이고, SpringCloud는 완전한 마이크로서비스 프레임워크이며, SpringCloud에 따라 다릅니다. 스프링부트에서.
Spring Boot는 주로 다음과 같은 장점을 가지고 있습니다: 시작하기 쉽고, 개발 효율성을 향상시키며, Spring 개발을 위한 더 빠르고 간단한 개발 프레임워크를 제공합니다. 번거로운 구성 없이 즉시 사용 가능합니다. 임베디드 서버, 보안 관리, 운영 데이터 모니터링, 상태 확인 및 외부 구성 등 대규모 프로젝트에 공통된 일련의 비업무 기능을 제공합니다. Spring Boot의 요약은 코딩을 단순화하고, 구성을 단순화하고, 배포를 단순화하고, 모니터링을 단순화하는 것입니다.
주로 어떤 주석으로 구성되어 있나요? 시작 클래스의 주석은 @SpringBootApplication이며 이는 Spring Boot의 핵심 주석이기도 합니다. 주요 조합에는 다음 세 가지 주석이 포함됩니다. @SpringBootConfiguration: @Configuration 주석을 결합하여 구성 파일의 기능을 구현합니다. @EnableAutoConfiguration: 자동 구성 기능을 켜거나 자동 구성 옵션을 끕니다. 예:
@ComponentScan: Spring 구성 요소 검색. java 如关闭数据源自动配置功能: @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })。
6. Spring Boot는 어떤 로깅 프레임워크를 지원하나요? 권장되는 기본 로깅 프레임워크는 무엇입니까?
7. SpringBoot Starter의 작동 원리
8. .X 새로운 소식은 무엇입니까? 1.X와 어떻게 다른가요?
12. Spring Boot를 독립 컨테이너에서 실행해야 하나요?
14. SpringBoot에서 핫 배포를 구현하는 방법은 무엇인가요?
Spring-boot-devtools
15. things
16. 비동기 비동기 호출 방법
ApplicationRunner 또는 CommandLineRunner 인터페이스를 구현할 수 있습니다. 이 두 인터페이스는
Spring Boot는 @PropertySource, @Value, @Environment, @ConfigurationPropertie 주석을 통해 변수를 바인딩할 수 있습니다
Spring JavaConfig는 Spring 3.0에서 도입된 Spring IOC 컨테이너 구성을 위한
순수 Java 메서드를 제공합니다. 따라서 XML 구성을 사용하지 않는 것이 도움이 됩니다. JavaConfig 사용의 장점은 다음과 같습니다.
객체 지향 구성. 구성은 JavaConfig에서 클래스로 정의되므로 사용자는 Java의 객체 지향 기능을 최대한 활용할 수 있습니다. 하나의 구성 클래스는 다른 구성 클래스를 상속하고 해당 @Bean 메서드를 재정의하는 등의 작업을 할 수 있습니다.
XML 구성을 줄이거나 제거합니다. 종속성 주입 원칙을 기반으로 하는 외부화된 구성의 이점이 입증되었습니다. 그러나 많은 개발자는 XML과 Java 간에 전환하는 것을 원하지 않습니다. JavaConfig는 개발자에게 XML 구성 개념과 유사한 Spring 컨테이너를 구성하는 순수한 Java 방법을 제공합니다. 기술적인 관점에서는 JavaConfig 구성 클래스만 사용하여 컨테이너를 구성하는 것이 가능하지만 실제로 많은 사람들은 JavaConfig와 XML을 혼합하고 일치시키는 것이 이상적이라고 생각합니다.
안전하고 리팩터링 친화적인 유형을 입력하세요. JavaConfig는 Spring 컨테이너를 구성하는 유형에 안전한 방법을 제공합니다. Java
5.0의 제네릭 지원 덕분에 이제 형변환이나 문자열 기반 조회 없이 이름 대신 유형별로 빈을 검색할 수 있습니다.
일반적으로 사용되는 Java 구성:
@Configuration: 이 주석을 클래스에 작성하여 이 클래스가 구성 클래스임을 나타냅니다.
@ComponentScan: 구성 클래스에 @ComponentScan 주석을 추가합니다. 기본적으로 이 주석은 이 클래스가 있는 패키지 아래의 모든 구성 클래스를 검색합니다. 이는 이전
@Bean: 빈 주입: 이전의 < bean id="objectMapper"
class="org.codehaus.jackson.map.ObjectMapper" />
@EnableWebMvc: xml의
@ImportResource: xml< import Resource="applicationContextcache.xml">
클래스를 사용하면 SpringBoot가 시작될 때 @EnableAutoConfiguration 주석 자동 구성 기능이 활성화됩니다.
이 EnableAutoConfiguration을 사용하면 다음과 같은 작업이 수행됩니다.
구성 파일 META_INF/Spring.factories에서 사용할 수 있는 자동 구성 클래스를 로드합니다.
중복을 제거하고, 제외 및 제외 이름 속성
Filter에 의해 전달되는 클래스를 제외하고, 조건( @Conditional)이 충족됩니다. 자동 구성 클래스가
1.properties 파일
3. 명령줄 매개변수;
YAML은 사람이 읽을 수 있는 데이터 직렬화 언어입니다. 일반적으로 구성 파일에 사용됩니다. 속성 파일에 비해 YAML 파일은 구성 파일에 복잡한 속성을
추가하려는 경우 더 구조화되고 덜 혼란스럽습니다. YAML에는 계층적 구성 데이터가 있음을 알 수 있습니다.
질서 있는 구성은 매우 중요합니다.
배열의 요소는 기본 데이터 유형 또는 객체일 수 있습니다.
YAML도 마찬가지입니다. 단점은 사용자 정의 YAML 구성을 가져오기 위한 @PropertySource 주석을 지원하지 않는다는 것입니다.
Spring Boot에서는 XML 구성 대신 Java 구성을 사용할 것을 권장하지만 Spring Boot에서도 XML 구성을 사용할 수 있습니다. @ImportResource 주석을 통해 XML 구성을 도입할 수 있습니다.
25.스프링부트의 핵심설정파일은 무엇인가요? bootstrap.properties와 application.properties의 차이점은 무엇인가요?
단순히 Spring Boot 개발을 한다면 bootstrap.properties 구성 파일을 접하기가 쉽지 않을 수 있지만 Spring Cloud와 결합하면 이 구성이 자주 발생하게 됩니다. 특히 일부 원격 구성 파일을 로드할 때 필요할 때 발생합니다.
스프링 부트의 핵심에 있는 두 가지 구성 파일:
프로젝트 개발 중에 데이터베이스 연결, Redis 구성 등 개발, 테스트 또는 프로덕션과 같은 다양한 환경에서 일부 구성 파일이 다를 수 있습니다. 그렇다면 다양한 환경에서 구성을 자동으로 전환하려면 어떻게 해야 할까요? Spring은 구성 파일을 앞뒤로 전환하는 기능을 제공하는
profiles 메커니즘을 제공합니다.
Spring 프로필을 사용하면 사용자가 구성 파일(dev, test, prod 등)을 기반으로 Bean을 등록할 수 있습니다. 따라서 애플리케이션
이 개발 중에 실행 중일 때는 특정 Bean만 로드할 수 있지만 PRODUCTION에서는 특정 다른 Bean을 로드할 수 있습니다.
Swagger 문서는 QA 환경에서만 사용할 수 있고 다른 모든 문서는 비활성화되어야 한다는 요구 사항이 있다고 가정해 보겠습니다. 이는 구성 파일을 사용하여 수행할 수 있습니다. Spring Boot를 사용하면 구성 파일 작업이 매우 쉬워집니다.
27. SpringBoot 다중 데이터 소스 분할 아이디어
28. SpringBoot 다중 데이터 소스 트랜잭션을 관리하는 방법
에 구성된 트랜잭션을 지정하는 것입니다. 두 번째 방법은 jta-atomikos를 사용하는 것입니다. 분산 트랜잭션 관리 구현
29. Spring Boot 애플리케이션을 보호하는 방법은 무엇입니까?
최신 버전으로 업그레이드
CSRF 보호 활성화
콘텐츠 보안 정책을 사용하여 XSS 공격 방지
30. Spring Boot 애플리케이션에서 보안을 구현하는 방법은 무엇입니까?
31. Spring Security와 Shiro의 장단점을 비교해 보세요.
Spring Security는 경량 보안 관리 프레임워크입니다.
Spring Security는 복잡한 개념과 번거로운 구성을 가지고 있습니다.
Spring Security는 간단합니다. Shiro는 강력한 기능을 가지고 있습니다
32. Spring Boot에서 도메인 간 문제를 해결하는 방법은 무엇입니까?
프론트 엔드에서 JSONP를 통해 도메인 간 문제를 해결할 수 있지만 JSONP는 GET 요청만 보낼 수 있고 다른 요청은 보낼 수 없습니다.
RESTful 스타일 애플리케이션에서는 매우 쓸모가 없어 보이기 때문에 크로스 도메인 문제를 해결하려면 백엔드에서 (CORS, Crossorigin 리소스 공유)를 사용하는 것이 좋습니다. 이 솔루션은 Spring Boot에만 있는 것이 아닙니다. 기존
@Configuration public class CorsConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("*") .allowCredentials(true) .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") .maxAge(3600); } }
33. Spring Boot에서 모니터란 무엇인가요?
스프링 부트 액추에이터는 스프링 시작 프레임워크의 중요한 기능 중 하나입니다. Spring Boot 모니터는 프로덕션 환경에서 실행 중인 애플리케이션의 현재 상태에 액세스하는 데 도움이 됩니다. 프로덕션 환경에서 확인하고 모니터링해야 하는 몇 가지 지표가 있습니다. 일부 외부 애플리케이션에서도 이러한 서비스를 사용하여 관련 사람들에게 경고 메시지를 보낼 수 있습니다. 모니터 모듈은 상태를 확인하기 위해 HTTP URL로 직접 액세스할 수 있는 REST 엔드포인트 세트를 노출합니다.
ControlerAdvice 클래스를 구현합니다.
35. 모든 Spring Boot 마이크로서비스를 어떻게 모니터링하나요?
우리는 에 있는 오픈 소스 프로젝트를 사용할 것입니다. 이는 여러 애플리케이션의 메트릭을 시각화할 수 있는 웹 UI를 제공하는 Spring Boot Actuator를 기반으로 구축되었습니다.
如果项目比较大,类比较多,不使用@SpringBootApplication,采用@Compoment指定扫包范
围
在项目启动时设置JVM初始内存和最大内存相同
将springboot内置服务器由tomcat设置为undertow
这可以使用 DEV 工具来实现。通过这种依赖关系,您可以节省任何更改,嵌入式tomcat 将重新启
动。Spring Boot 有一个开发工具(DevTools)模块,它有助于提高开发人员的生产力。Java 开
发人员面临的一个主要挑战是将文件更改自动部署到服务器并自动重启服务器。开发人员可以重新
加载 Spring Boot 上的更改,而无需重新启动服务器。这将消除每次手动部署更改的需要。Spring
Boot 在发布它的第一个版本时没有这个功能。这是开发人员最需要的功能。DevTools 模块完全满
足开发人员的需求。该模块将在生产环境中被禁用。它还提供 H2 数据库控制台以更好地测试应用
程序。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency>
在微服务中,一个完整的项目被拆分成多个不相同的独立的服务,各个服务独立部署在不同的服务
器上,各自的 session 被从物理空间上隔离开了,但是经常,我们需要在不同微服务之间共享
session ,常见的方案就是 Spring Session + Redis 来实现 session 共享。将所有微服务的
session 统一保存在 Redis 上,当各个微服务对 session 有相关的读写操作时,都去操作 Redis 上
的 session 。这样就实现了 session 共享,Spring Session 基于 Spring 中的代理过滤器实现,使
得 session 的同步操作对开发人员而言是透明的,非常简便。
使用了下面的一些依赖项
spring-boot-starter-web 嵌入tomcat和web开发需要servlet与jsp支持
spring-boot-starter-data-jpa 数据库支持
spring-boot-starter-data-redis redis数据库支持
spring-boot-starter-data-solr solr支持
mybatis-spring-boot-starter 第三方的mybatis集成starter
自定义的starter(如果自己开发过就可以说出来)
首先,这个 Starter 并非什么新的技术点,基本上还是基于 Spring 已有功能来实现的。首先它提
供了一个自动化配置类,一般命名为 XXXAutoConfiguration ,在这个配置类中通过条件注解来
决定一个配置是否生效(条件注解就是 Spring 中原本就有的),然后它还会提供一系列的默认配
置,也允许开发者根据实际情况自定义相关配置,然后通过类型安全的属性(spring.factories)注入
将这些配置属性注入进来,新注入的属性会代替掉默认属性。正因为如此,很多第三方框架,我们
只需要引入依赖就可以直接使用了。当然,开发者也可以自定义 Starter
在 Spring Boot 中使用定时任务主要有两种不同的方式,一个就是使用 Spring 中的 @Scheduled
注解,另一-个则是使用第三方框架 Quartz。
使用 Spring 中的 @Scheduled 的方式主要通过 @Scheduled 注解来实现。
我们都知道,新创建一个 Spring Boot 项目,默认都是有 parent 的,这个 parent 就是 springboot-starter-parent ,spring-boot-starter-parent 主要有如下作用:
定义了 Java 编译版本为 1.8 。
使用 UTF-8 格式编码。
继承自 spring-boot-dependencies,这个里边定义了依赖的版本,也正是因为继承了这个依
赖,所以我们在写依赖时才不需要写版本号。
执行打包操作的配置。
自动化的资源过滤。
自动化的插件配置。
针对 application.properties 和 application.yml 的资源过滤,包括通过 profile 定义的不同
环境的配置文件,例如 application-dev.properties 和 application-dev.yml。
总结就是打包用的
进入项目目录在控制台输入mvn clean package,clean是清空已存在的项目包,package进行打
包或者点击左边选项栏中的Mavne,先点击clean在点击package
Spring Boot 프로젝트에서 최종적으로 패키징된 jar는 실행 가능한 jar입니다. java -jar xxx를 통해 직접 실행할 수 있습니다. jar 명령입니다. 이러한 종류의 jar는 다른 프로젝트에서 일반 jar처럼 의존할 수 없으며 종속적이라 하더라도 해당 클래스를 사용할 수 없습니다.
Spring Boot의 jar는 구조가 일반 jar와 다르기 때문에 다른 프로젝트에서 신뢰할 수 없습니다. 일반 jar 패키지의 경우 압축을 풀면 바로 패키지 이름이 되고 해당 패키지는 우리의 코드가 됩니다. 그러나 압축을 푼 후에는 Spring Boot에서 패키지한 실행 가능한 jar가 BOOTINFclasses 디렉터리에 있는 우리의 코드가 되므로 그럴 수 없습니다. 직접 참조했습니다. 참조해야 하는 경우 pom.xml 파일에 구성을 추가하고 Spring Boot 프로젝트를 두 개의 jar(실행 파일 하나와 참조 가능 파일)로 패키징할 수 있습니다.
위 내용은 SpringBoot 면접 질문과 답변은 무엇인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!