通过SpringBoot,可以轻松的创建独立的,基于生产级别的Spring的应用程序,您可以“运行”它们。大多数SpringBoot应用程序要最少的Sprig配置
快速开发
快速整合
配置简化
内嵌服务容器
SpringBoot是快速开发的Spring框架,SpringCloud是完整的微服务框架,SpringCloud依赖于SpringBoot。
SpringBoot主要有如下优点:
1. 容易上手,提升开发效率,为Spring开发提供一个更快、更简单的开发框架。
2. 开箱即用,原理繁琐的配置。
3. 提供了一系列大型项目通用的非业务性能,例如:内嵌服务器、安全管理、运行数据监控、运行状况检查和外部化配置等。
4. SpringBoot总结就是使用编程变简单、配置变简单、部署变简单、监控变简单等等
1. 启动类上的注解使@SpringBootApplication,他也是SpringBoot的核心注解,主要组合包含以下三个注解:
1. @SpringBootConfiguration:组合了@Configuration注解,实现配置文件的功能。
2. @EnableAutoConfiguration:打开自动配置的功能,也可以关闭掉某个自动配置的选项,例如:Java如关闭数据源自动配置功能:@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}).
1. @ComponentScan:Spring组件扫描
1. 在SpringBoot启动时由@SpringBootApplication注解会自动去maven中读取每个starter中的spring.factories文件,该文件里配置了所有需要被创建spring容器中的bean,并且进行自动配置把bean注入SpringContext中//(SpringContext是Spring的配置文件)
2. 其实SpringBoot就是由各种Starter组合起来的,我们自己也可以开发Starter
1. 配置变更
2. JDK版本升级
3. 第三方类库升级
4. 响应式Spring编程支持
5. HTTP/2支持
6. 配置属性绑定
7. 更多改进与加强
thymeleaf,freemarker,jsp,官方不推荐JSP会有什么限制
SpringBoot的事务很简单,首先使用注解EnableTransactionManagement开启事务之后,然后再Service方法上注解Transactional便可。
在SpringBoot中使用异步调用是很简单的,只需要在方法上使用@Async注解即可实现方法的异步调用。注意:需要在启动类加入@EnableAsync使用使用异步调用@Async注解失效
可以实现接口ApplicationRunner或者CommandLineRunner,这两个接口实现方法一样,它们都只提供一个run方法
@SpringBootAppliation
1. @SpringBootConfiguration:组合了@Configuration注解,实现配置文件的功能。
2. @EnableAutoConguration:打开自动配置的功能,也可以关闭某个自动配置的选项。
3. @SpringBootApplication (exclude = {DataSourceAutoConfiguration.class})
4. @ComponenScan:Spring组件扫描
yaml是一个可读性高,用来表达数序列化的格式。yaml参考了其他多种语言,包括:C语言、Python、Perl。根据结构性。
1. Main方法
2. 命令行java -jar的方式
3. mvn/gradle
不需要,内置了Tomcat/jetty。
1. 命令行参数
2. java:comp/env里的JNDI属性
3. JVM系统属性
4. 操作系统环境变量
5. 随机生成带random.* 前缀的属性(在设置其他属性时,可以引用它们,比如${random.long})
6. 应用程序内的application。properties或则application.yml文件
7. 打包应用在应用程序内的application》properties或则application.yml文件
8. 通过@PropertySource标注的属性源
9. 默认属性
3. 内置,在config包内
这个列表按照优先级排序,优先级高的会覆盖优先级低的,当然我们也可以自己指定文件的位置来加载配置文件。
java -jar xiaka.jar ----spring.config.location=/home/application.yml
@EnableAutoConfiguration (开启自动配置)该注解引入了AutoConfigurationImportSelector,该类中的方法会扫描所有存在META-INF/spring.factories的jar包
1. spring-boot-devtools
2. Spring Loaded
3. Jrebel
4. 热模板部署
bootstrap.yml优先于application.yml
yml:
server :
port : 8080
properties:
server.port = 8080
命令1
java -jar xiaoka.jar ----server.port = 8080
命令2
java - Dserver.port = 8080 -jar xiaokao.jar
在启动类加:
@ImportResource(locations = {"classpath:spring.xml"})
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
1. @PatchMapping
2. @PostMapping
3. @GetMapping
4. @PutMapping
5. @DeleteMapping
可以理解成对依赖的一种合成,starter会把一个或一套功能相关依赖都包含进来,避免了自己去依赖费事,还有各种包冲突问题。大大的提升了开发效率。
并且相关配置会有一个默认值,如果我们自己去配置,就会覆盖默认值。
mybatis-spring-boot-starter
可以时application-{profile}.properties/yml,但默认时启动主配置文件application.properties,一般来说我们的不同环境配置如下。
1. application.properties:主配置文件
2. application-dev.properties:开发环境配置文件
3. application-test.properties: 测试环境配置文件
4. application.prop-properties: 生产环境配置文件
比如我峨嵋你激活开发环境。
yml:
spring :
profiles :
actice :dev
properties:
spring.profiles.actice = dev
命令行
java -jar xiaokao-v1.0.jar ----spring.profile.actice = dev
@SpringBootTest
方法测试
@Test
@ControllerAdvice
@ExceptionHandler
@PropertSource
@Value
@Enviromment
@ConfigurationProperties
1. 主要是SpringBoot的启动类上的核心注解SpringBootApplication注解主配置类,有了这个主配置类启动时就会为SpringBoot开启一个@EnableAutoConfiguration注解自动配置功能。
2. 有了这个EnableAutoConfiguration的话就会:
1. 从配置文件META_INF/Spring。factores加载可能用到的自动配置类
2. 去重,并将exclude和excludeName属性携带的类排除
3. 过滤,将满足条件(@Conditional)的自动配置类返回
1. 在Spring Boot里面,可以使用以下几种方式来加载配置。
1. properties文件
2. Yaml文件
3. 系统环境变量
4. 命令行参数
5. 等等...
单纯做SpringBoot开发,可能不太容易遇到bootstarp.properties配置文件,但在结合SpringCloud时,这个配置就会经常遇到了,特别是在需要加载一些配置文件的时候。
为了实现SpringBoot的安全性,我们使用spring-boot-starter-security依赖项,并且必须添加安全配置。它只需要很少的代码。配置类将必须扩展WebSecurityConfigurerAdapter并覆盖其方法。
Starter ,使得在 Spring Boot 中使用 Spring Security 变得更加容易,甚至只需要添加一个依赖就可以保护所有的接口,所以,如果是 Spring Boot 项目,一般选择 Spring Security 。当然这只是一个建议的组合,单纯从技术上来说,无论怎么组合,都是没有问题的。Shiro 和 SpringSecurity
相比,主要有如下一些特点:
spring:
main:
lazy-initialization: true
Spring boot actuator 是 spring 启动框架中的重要功能之一。Spring boot 监视器可帮助您访问生产环境中正在运行的应用程序的当前状态。有几个指标必须在生产环境中进行检查和监控。使一些外部应用程序可能正在使用这些服务来向相关人员触发警报消息。监视器模块公开了一组直接作为 HTTP URL 访问的REST 端点来检查状态。
Spring Boot 提供监视器端点以监控各个微服务的度量。这些端点对于获取有关应用程序的信息(如它们是否已启动)以及它们的组件(如数据库等)是否正常运行很有帮助。但是,使用监的一个主要缺点或困难是,我们必须单独打开应用程序的知识点以了解其状态或健康状况。想象一下涉及 50 个应用程序的微服务,管理员将不得不击中所有 50 个应用程序的执行终端。为了帮助我们处理这种情况,我们将使用位于的开源项目。 它建立在 Spring Boot Actuator 之上,它提供了一个 Web UI,使我们能够可视化多个应用程序的度量。
主要针对接口
设置一批接口实现跨域
跨域请求nginx
1. @SpringBootApplication注解:这个注解标识了一个SpringBoot工程,它实际上是另外三个注解的组合,这三个注解是:
1. @SpringBootConfiguration:这个注解实际上就是一个@Configuration,标识启动类也是一个配置类
2. Auto Configuration:向Spring容器中导入了一个Selector,用来加载ClassPath下SpringFactories中所有定义的自动配置类,将这些自动加载为Bean
3. @Conditional也很关键,如果没有它无法在自定义应用中进行定制开发
1. @ConditionalOnBean
2. @ConditionalOnClass
通过时间监听的方式读取的配置文件:ConfigFileApplicationListener
优先级从高到低,高优先级的配置覆盖低优先级的配置,所有配置会形成互补配置。
1. file: ../config
2. file: ./config
3. file: ../
4. classpath: config/
5. classpath:
在微服务中,一个完整的项目被拆分成多个不相同的独立的服务,各个服务独立部署在不同的服务器上,各自的session被从物理空间上隔离开了,但是经常,我们需要在不同微服务之间共享session ,常见的方案就是 Spring Session + Redis 来实现 session 共享。将所有微服务的session 统一保存在 Redis 上,当各个微服务对 session 有相关的读写操作时,都去操作 Redis上的 session 。这样就实现了 session 共享,Spring Session 基于 Spring 中的代理过滤器实现使得 session 的同步操作对开发人员而言是透明的,非常简便。
是一个你了下面的一些依赖项:
1. spring-boot-starter-web 嵌入tomcat和web开发需要servlet与jsp
2. spring-boot-starter-data-jpa 数据库支持
3. spring-boot-starter-data-redis redis数据库支持
4. spring-boot-starter-data-solr solr支持
5. mybatis-spring-boot-starter 第三方的mybatis集成starter
1. 在Spring Boot 中使用定时任务主要有两种不同的方式,一个就是使用Spring中@Scheduled注解,另一则是使用第三方框架Quartz。
2. 使用Spring中的@Scheduled的方式主要通过 @Scheduled注解实现。
2. 或者点击左边选项栏中的Mavne,先点击clean在点击package
1. Spring Boot 项目最终打包成jar是可执行jar ,这种jar可以直接通过java-jar xxx.jar命令来运行,这种jar不可做为普通的 jar 被其他项目依赖,即使依赖了也无法使用其中的类。
2.. SpringBoot的jar 无法被其他项目依赖,主要还是他和普通 jar 的结构不同。普通的jar包,解压后直接就包名,包里就是我们的代码,因此无法被直接引用。如果非要引用,可以在pom.xml文件中增加配置,将SpringBoot项目打包成两个jar,一个可执行,一个可引用