>  기사  >  Java  >  springboot 구성 주석에 대한 자세한 소개

springboot 구성 주석에 대한 자세한 소개

不言
不言앞으로
2019-02-01 11:36:394412검색

이 기사는 springboot 구성 주석에 대한 자세한 소개를 제공합니다. 필요한 친구가 참고할 수 있기를 바랍니다.

1. 개요

Spring Boot는 새로운 Spring 애플리케이션의 초기 구성 및 개발 프로세스를 단순화하도록 설계되었습니다. Spring Boot는 Spring 기능의 향상은 아니지만 Spring을 빠르게 사용할 수 있는 방법을 제공합니다.

2. 기능

①독립형 Spring 애플리케이션 생성
②내장형 Tomcat, WAR 파일 배포 필요 없음
③간소화된 Maven 구성
④Spring 자동 구성
⑤메트릭, 상태 확인, 외부 구성 등 프로덕션에 즉시 사용 가능한 기능 제공
⑥ 상자, 코드 생성 없음, XML 구성 필요 없음.

3. 주석 설명

@SpringBootApplication Spring Boot 프로젝트의 핵심 주석으로, 주요 목적은 자동 구성을 활성화하는 것입니다.
@Configuration은 xml 구성 파일과 동일하게 클래스에 대해 작동하고 Spring을 구성합니다
xml 구성의 60e23eb984d18edbb092da6b8f295aba
에 해당하는 메서드 @ComponentScan은 기본적으로 @SpringBootApplication이 있는 클래스의 형제 디렉터리와 해당 하위 디렉터리를 검색합니다.
@PropertySource("classpath:env.properties")는 외부 구성 파일을 읽고 @Value 주석을 통해 값을 얻습니다.
@Transactional은 트랜잭션을 선언합니다.

4. SpringBoot 디렉터리 파일 구조 설명

src/main/java : 코드 저장
src/main/resources
static: CSS, js, 이미지와 같은 정적 파일 저장(http://localhost:8080/js/main.js 액세스)
템플릿: 정적 페이지 jsp, html, tpl
config: 저장소 구성 파일, application.properties

5. SpringBoot 기본 로딩 파일 경로

/META-INF/resources/
/resources/
/static/
/public/

SpringBoot 기본 구성

spring.resources.static-locations = classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/

6. Spring Boot 핫 배포

①왼쪽 프로젝트에 자동으로 Select Build 추가

③자동 컴파일을 설정한 다음 Shift+Ctrl+Alt+/를 선택하고 Registry

를 선택한 다음 컴파일러.automake.allow.when.app.running

을 확인하세요. ④핫 배포되지 않은 파일
1./META-INF /maven, / META-INF/resources, /resources, /static, /public 또는 /templates

2. 핫 배포되지 않을 파일 지정 spring.devtools.restart.exclude=static/**,public/**

3, 수동 트리거 다시 시작 spring.devtools.restart.trigger-file=trigger.txt
다시 시작하지 않고 코드 변경, 텍스트로 제어

7. 시작 배너 사용자 정의

①http://patorjk.com/software /taag 방문 /#p=display&h=3&v=3&f=4Max&t=itcast%20Spring%20Boot
②생성된 문자를 텍스트 파일에 복사하고 파일 이름을 배너.txt

로 지정합니다. ③banner.txt를 프로젝트 리소스 디렉터리에 복사합니다


8. 전역 구성 파일 (application.properties 또는 application.yml)

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>

더 많은 클릭은 공식 웹사이트 주소를 참조하세요

9. Starter pom

spring-boot-starter core 자동 구성 지원, 로깅 및 YAML을 포함한 Spring Boot 스타터

spring-boot-starter-amqp spring-rabbit을 통해 구현된 고급 메시지 대기열 프로토콜 지원

spring-boot-starter-aop spring-aop 및 AspectJ를 포함한 관점 지향 프로그래밍 지원

spring -boot-starter-data- elasticsearch spring-data-elasticsearch를 포함한 Elasticsearch 검색 엔진 지원
spring-boot-starter-data-jpa spring-data-jpa, spring-orm 및 Hibernate
을 포함한 Java 지속성 API 지원 spring-boot-starter-jdbc 지원 JDBC 데이터베이스용
spring-boot-starter-redis spring-redis를 포함한 REDIS 키-값 데이터 저장소 지원
spring-boot-starter-data-redis
spring-boot- starter-security spring-security
지원 spring- boot-starter-test JUnit, Hamcrest 및 Mockito를 포함한 일반적인 테스트 종속성에 대한 지원, spring-test
spring-boot-starter-velocity Velocity 템플릿 엔진 지원
spring -boot-starter-activemq
spring-boot-starter-freemarker
spring-boot-starter-thymeleaf
spring-boot-starter-web Tomcat 및 spring-webmvc를 포함한 전체 스택 웹 개발 지원
spring-boot-starter -webflux
(자세한 구성은 Baidu 참조)

10. 일반적으로 사용되는 json 프레임워크

(1) Json으로의 JavaBean 직렬화, 성능:

Jackson > FastJson > Gson > Json-lib

(2) jackson 처리 관련 Annotation

지정된 필드는 반환되지 않습니다. 날짜 형식: @JsonFormat(pattern="yyyy-MM-dd hh:mm:ss",locale="zh",timezone="GMT+8")
빈 필드는 반환되지 않습니다. 반환: @JsonInclude(Include.NON_NUll )
별칭 지정: @JsonProperty

11. SpringBoot는 작업 예약을 사용합니다

(1)使用步骤:

①启动类里面 @EnableScheduling开启定时任务,自动扫描
②定时任务业务类 加注解 @Component被容器扫描
③定时执行的方法加上注解 @Scheduled(fixedRate=2000) 定期执行一次

(2)常用定时任务表达式配置和在线生成器

cron 定时任务表达式 @Scheduled(cron="*/1 * * * * *") 表示每秒

crontab 工具  https://tool.lu/crontab/

ixedRate: 定时多久执行一次(上一次开始执行时间点后xx秒再次执行;)
fixedDelay: 上一次执行结束时间点后xx秒再次执行
fixedDelayString:  字符串形式,可以通过配置文件指定

(3)异步定时任务

启动类里面使用@EnableAsync注解开启功能,自动扫描
定义异步任务类并使用@Component标记组件被容器扫描,异步方法加上@Async
①要把异步任务封装到类里面,不能直接写到Controller
②增加Futuref7e83be87db5cd2d9a8a0b8117b38cd4 返回结果 AsyncResultf7e83be87db5cd2d9a8a0b8117b38cd4("task执行完成");  
③如果需要拿到结果 需要判断全部的 task.isDone()

十二、SpringBoot拦截器、过滤器、监听器

(1)SpringBoot启动默认加载的Filter 

characterEncodingFilter
hiddenHttpMethodFilter
httpPutFormContentFilter
requestContextFilter

(2)Filter优先级

Ordered.HIGHEST_PRECEDENCE
Ordered.LOWEST_PRECEDENCE

(3)自定义Filter

1)使用Servlet3.0的注解进行配置
2)启动类里面增加 @ServletComponentScan,进行扫描
3)新建一个Filter类,implements Filter,并实现对应的接口
4) @WebFilter 标记一个类为filter,被spring进行扫描 
urlPatterns:拦截规则,支持正则
5)控制chain.doFilter的方法的调用,来实现是否通过放行
  不放行,web应用resp.sendRedirect("/index.html");
场景:权限控制、用户登录(非前端后端分离场景)等

(4)Servlet3.0的注解自定义原生Listener监听器

自定义Listener(常用的监听器 servletContextListener、httpSessionListener、servletRequestListener)
@WebListener

 public class RequestListener implements ServletRequestListener { 

@Override

public void requestDestroyed(ServletRequestEvent sre) {
// TODO Auto-generated method stub
System.out.println("======requestDestroyed========");
}

@Override

public void requestInitialized(ServletRequestEvent sre) {
System.out.println("======requestInitialized========");
}

(5)自定义拦截器
1)implements WebMvcConfigurer
@Configuration

public class CustomWebMvcConfigurer implements WebMvcConfigurer  {

@Override

public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginIntercepter()).addPathPatterns("/api2/*/**");
//.excludePathPatterns("/api2/xxx/**");
WebMvcConfigurer.super.addInterceptors(registry);
}
}

2)自定义拦截器 HandlerInterceptor
preHandle:调用Controller某个方法之前
postHandle:Controller之后调用,视图渲染之前,如果控制器Controller出现了异常,则不会执行此方法
afterCompletion:不管有没有异常,这个afterCompletion都会被调用,用于资源清理
3)按照注册顺序进行拦截,先注册,先被拦截

(6)对比

Filter是基于函数回调 doFilter(),而Interceptor则是基于AOP思想
Filter在只在Servlet前后起作用,而Interceptor够深入到方法前后、异常抛出前后等
Filter依赖于Servlet容器即web应用中,而Interceptor不依赖于Servlet容器所以可以运行在多种环境。
在接口调用的生命周期里,Interceptor可以被多次调用,而Filter只能在容器初始化时调用一次。
Filter和Interceptor的执行顺序:过滤前->拦截前->action执行->拦截后->过滤后

十三、两种部署方式jar和war

(1)jar包方式启动

添加maven插件,执行打包即可,启动命令:    java -jar **.jar &

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

(2)war包方式启动

a.在pom.xml中将打包形式 jar 修改为war  0d5281799fde01379a2f5b5ea0c57ee5warb381c39f05d1340a5f54760f38fa259d
b.添加构建项目名称 1079ce9524e93e3b51b338f3745023bdxdclass_springboot8bfec31baefed0960a447581fc9bf1d0
c.修改启动类

public class XdclassApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(XdclassApplication.class);
}
public static void main(String[] args) throws Exception {
SpringApplication.run(XdclassApplication.class, args);
}
}

 d.打包项目,启动tomcat

十四、SpringBoot多环境配置

①不同环境使用不同配置
例如数据库配置,在开发的时候,我们一般用开发数据库,而在生产环境的时候,我们是用正式的数据
②配置文件存放路径
classpath根目录的“/config”包下
classpath的根目录下
③spring boot允许通过命名约定按照一定的格式(application-{profile}.properties)来定义多个配置文件  

위 내용은 springboot 구성 주석에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제