SpringBoot2企业应⽤实战(1)
SpringBoot 使⽤的是 2.1.3.RELEASE
第⼀章 SpringBoot⼊门
1.Spring框架的组成结构图
当使⽤Spring框架时,必须使⽤Spring Core Container(核⼼容器),它代表了Spring框架的核⼼机制,Spring Core Container 主要由 、org.springframework.beans、t
和 pression 四个⼦包组成,主要提供Spring IoC 容器⽀持。
2.Spring 框架⾮常优秀,但是最⼤问题是“配置过多”。SpringBoot 的出现就是为了解决 Spring 框架存在的问题。Spring Boot的理念:约定优先于配置(COC,Convention Over Configuration)。SpringBoot 优点:编码简单:推荐使⽤注解;配置简单:⾃动配置、快速构建项⽬、快速集成新技术的能⼒;部署简单:内嵌Tomcat、Jetty等 Web 容器;监控简单:⾃带项⽬监控。
3.SpringBoot 的主要特性
1)SpringBoot 是伴随着 Spring4.0 诞⽣的,继承了 Spring 框架原有的优秀基因;
2)遵循“约定优先于配置”的原则,使⽤SpringBoot只需要很少的配置,⼤部分的时候,直接使⽤默认的配置即可;
3)对主流开发框架⽆配置集成,⾃动整合第三⽅框架;
4)可独⽴运⾏ Spring 项⽬,SpringBoot 可以以 jar 包的形式独⽴运⾏。使⽤ java -jar 命令或者在项⽬的主程序中执⾏ main 函数就可以成功运⾏项⽬;
5)内嵌 Servlet 容器,可以选择内嵌 Tomcat、Jetty等 Web 容器,⽆须以 war 包形式部署项⽬;
6)提供 starter 简化 Maven 配置,基本上可以做到⾃动化配置,⾼度封装,开箱即⽤;
7)SpringBoot 会根据项⽬依赖来⾃动配置 Spring 框架,极⼤减少了项⽬所使⽤的配置;
8)SpringBoot 提供了准⽣产环境的应⽤监控;
9)⽆代码⽣成和 XML 配置,纯 Java 的配置⽅式,很简单,很⽅便。
10)分布式开发,与 SpringCloud 的微服务⽆缝结合。
4.SpringBoot2.0 的重要改变
1)基于 Spring5 构建,Spring5 的新特性都可以在 SpringBoot2.0 中使⽤;
2)为各种组件的响应式编程提供了简化配置,如: Reactive Spring Data、Reactive Spring Security等;
3)要求 Java 版本必须是 Java8 或者更⾼版本,⽀持Java9;
4)要求 Gradle4或更⾼版本,Maven3.2 或更⾼版本
5)要求Tomcat8 或者更⾼版本, Hibernate5.2 或更⾼版本, Thymeleaf3 或更⾼版本。
5.所有的 spring-boot-starter 模块都有约定的默认配置,但是允许开发者调整这些默认的配置⽤以改变默认的配置⾏为,这就是所谓
的“约定优先于配置”。SpringBoot 的配置按优先级从⾼到低,主要可以分为:
1)命令⾏参数
2)系统环境变量
3)位于⽂件系统中的配置⽂件
4)位于classpath中的配置⽂件
5)固化到代码中的配置
⾼优先级的配置项会覆盖或者优先⽣效。
6.常⽤约定
1)项⽬结构层⾯的约定
在传统的Java Web 项⽬中,所有的静态⽂件和页⾯都放在 WebContent ⽬录下,⽽ Spring Boot 项⽬的静态⽂件和页⾯⽂件统⼀放在src/main/resources ⽬录对应的⼦⽬录下。 src/main/resources/static ⽬录⽤于存放各类静态资源⽂件,⽐如 css、js 和 image 等; src/main/resources/templates ⽬录⽤于存放页⾯模板⽂件,⽐如html和jsp等。
2)SpringMVC框架层⾯的约定
spring-boot-starter-web 依赖模块默认⾃动配置⼀些 SpringMVC 必要的组件。
将 ViewResolver ⾃动注册到 Spring 容器;将 Converter 和 Formatter 等 bean ⾃动注册到 Spring 容器;将对 Web 请求的⽀持和相应的类型转换的 HttpMessageConverter ⾃动注册到 Spring 容器;将 MessageCodesResolver ⾃动注册到 Spring 容器。
3)嵌⼊式 Web 容器层⾯的约定
spring-boot-starter-web 依赖模块默认使⽤嵌⼊式 Tomcat 作为 Web 容器对外提供服务,默认使⽤ 8080 端⼝对外监听和提供服务。
spring ioc注解7.SpringBoot的Maven项⽬结构
1)Source Folder 不是⼀个简单的 src,⽽是 src/main/java,因为 Maven 是⼀种强约束的⼯程类型。它对⼯程的⽂件命名和格式要求⽐较严格。其好处是指定了规范,⽅便代码的移植和理解。⽽ src/main/java其实是⼀个路径。
src/main/java:这个⽬录下存储主要的 Java 代码。
src/test/java:存储测试⽤的类,⽐如JUnit的测试⼀般就存放在这个⽬录下⾯。
2)target ⽂件夹是源码编译后⽣成的 class ⽂件存放的地⽅(如果是⼀个web应⽤,还有其他的信息也在编译打包之后放在target⾥⾯)。target⽂件夹下有两个⽬录。
classes:存放项⽬代码编译后⽣成的 class ⽂件;
test-classes:存放测试代码编译后⽣成的 class ⽂件
8.@RestController 注解是⼀个组合注解,相当于 SpringMVC 中的 @Controller + @ResponseBody 合在⼀起的作⽤。
@SpringBootApplication 注解也是⼀个组合注解,相当于 @Configuration + @EnableAutoConfiguration + @ComponentScan
第⼆章 SpringBoot 核⼼
1.SpringBoot 启动类与核⼼注解 @SpringBootApplication
SpringBoot 的项⽬⼀般都会有注解 *Application 标注的⼊⼝类,⼊⼝类中会有⼀个 main ⽅法,main
⽅法是⼀个标准的 Java 应⽤程序的⼊⼝⽅法,可以直接启动。@SpringBootApplication 注解是 SpringBoot 的核⼼注解,⽤此注解标注的⼊⼝类是应⽤的启动类,通常会在启动类的 main ⽅法中通过 SpringApplication.run(App.class,args) 来启动 SpringBoot 应⽤项⽬。
@SpringBootApplication 其实是⼀个组合注解,源代码如下:
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
excludeFilters = {@Filter(
type = FilterType.CUSTOM,
classes = {TypeExcludeFilter.class}
), @Filter(
type = FilterType.CUSTOM,
classes = {AutoConfigurationExcludeFilter.class}
)}
)
public @interface SpringBootApplication { ...... }
@SpringBootApplication 注解组合了 @SpringBootConfiguration 、 @EnableAutoConfiguration 和 @ComponentScan
@SpringBootConfiguration:SpringBoot 项⽬的配置注解,也是⼀个组合注解;
@EnableAutoConfiguration:启动⾃配置,该注解让 SpringBoot 根据当前项⽬所依赖的 jar 包⾃动配置项⽬的相关配置项;
@ComponentScan:扫描配置,SpringBoot 默认会扫描 @SpringBootApplication 所在的同级包以及它的⼦包,所以建议将
@SpringBootApplication 修饰的⼊⼝类放置在项⽬包下(GroupId + ArtifactId),这样做的好处是,可以保证 SpringBoot 项⽬⾃动扫描到项⽬的所有包。
2.关闭某个⾃动配置
例如,不想⾃动配置 Redis,想⾃⼰⼿动配置,通过查看 @SpringBootApplication 的源码可以看出,关闭特定的⾃动配置应该使⽤
@SpringBootApplication 下的 exclude 参数,现以关闭 Redis ⾃动配置为例:
@SpringBootApplication(exclude={RedisAutoConfiguration.class})
3.应⽤的全局配置⽂件
可在SpringBoot项⽬的 src/main/resources ⽬录下或者类路径的 /config ⽬录下创建⼀个全局配置⽂件 application.properties 或者是后缀为 .yml 的 l ⽂件,⽤于修改 SpringBoot 项⽬的默认配置值。通常我们习惯使⽤ application.properties ⽂件作为应⽤的全局配置⽂件,⼀般放到 src/main/resources ⽬录下。
4.
5.spring.factories 分析
6.SpringBootWeb 开发的⾃动配置
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论