Spring Boot 学习记录

SpringBoot简化了Spring框架带来的大量XML配置以及复杂的依赖管理,让开发人员可以更加关注业务逻辑的开发。

java的三种配置方式

基于xml的配置

基于注解的配置

基于java的配置

Spring boot推荐的配置方式:java配置+注解配置

一、注解

SpringBootApplication  :等价于以默认属性使用 @Configuration , @EnableAutoConfiguration 和 @ComponentScan

  scanBasePackages  :扫描包数组

  exclude  :排除类

@EnableAutoConfiguration:SpringBoot根据应用所声明的依赖来对Spring框架进行自动配置。

@SpringBootConfiguration(内部为@Configuration):被标注的类等于在spring的XML配置文件中(applicationContext.xml),装配所有bean事务,提供了一个spring的上下文环境。

@ComponentScan:组件扫描,可自动发现和装配Bean,默认扫描SpringApplication的run方法里的Booter.class所在的包路径下文件,所以最好将该启动类放到根包路径下。

=======================

@Configuration的注解类标识这个类可以使用Spring IoC容器作为bean定义的来源。

@Bean注解告诉Spring,一个带有@Bean的注解方法将返回一个对象,该对象应该被注册为在Spring应用程序上下文中的bean。

=======================

条件注解(@Conditional)

ConditionalOnJava

ConditionalOnJndi

ConditionalOnWebApplication

ConditionalOnNotWebApplication

ConditionalOnExpression

ConditionalOnClass  :表示对应的类在classpath目录下存在时

ConditionalOnMisssingClass  :表示对应的类在classpath目录下找不到时

ConditionalOnBean

ConditionalOnMissingBean

ConditionalOnProperty

ConditionalOnResource

ConditionalOnSingleCandidate

自动配置

AutoConfigurationPackage

AutoConfigureBefore

AutoConfigureAfter

AutoConfigureOrder

二、探测条件

OnClassCondition  :用于表示匹配的类型,是最普遍的浏览探测条件

OnBeanCondition  :

OnPropertyCondition  :

待续。。。

三、环境配置 - profiles

1、spring.profiles.active:dev  表示的是激活那个环境的配置

2、每个环境配置项是根据 '---' 这个分隔符隔离开的(对,你没看错,刚开始我也觉得不可思议)

3、在每个环境的配置项中可以自定义配置(不一定都是spring开头的配置)

4、分文件配置

application-dev.yml

application-prd.yml

spring boot的yml文件用profiles实现不同环境的配置

springboot 读取 yml 配置的几种方式

四、Spring Boot 运行的原理

Spring Boot 自动配置的原理 基于 Spring4.x 提供的 基于条件来配置Bean的能力。即基于条件注解(@ConditionalOn...)来实现自动装配。

核心:@EnableAutoConfiguration 注解中 @Import 的 AutoConfigurationImportSelector 类。

     借助@Import的支持,收集和注册特定场景相关的bean定义,将所有符合自动配置条件的bean定义加载到IoC容器。

          借助于Spring框架原有的一个工具类:SpringFactoriesLoader的支持。

          SpringFactoriesLoader属于Spring框架私有的一种扩展方案,其主要功能就是从指定的配置文件META-INF/spring.factories加载配置。

过程:@EnableAutoConfiguration自动配置过程:SpringFactoriesLoader 从 classpath中搜寻所有的META-INF/spring.factories配置文件,

    并将其中org.springframework.boot.autoconfigure.EnableutoConfiguration对应的配置项通过反射(Java Refletion)实例化为对应的标注了

    @Configuration的JavaConfig形式的IoC容器配置类,然后汇总为一个并加载到IoC容器。

配置:位于spring-boot-autoconfigure 包下 的 META-INF/spring.factories

五、定时任务

SpringBoot定时任务@EnableScheduling

六、Springboot MongoTemplate

springboot mongodb配置解析

MongoTemplate进行增删改查

mongoTemplate

手把手教springboot访问/操作mongodb(查询、插入、删除)

SpringBoot+mongoDB实现id自增

MongoDB批量更新和批量插入的方式

Spring Boot MongoDBTemplate 增删改查

基于SpringBoot 框架MongoDB 一些简单的查询方式

mongodb链接

mongodb://username:password@host:port/db_name

参考资料

Springboot日志

SpringBoot 日志配置

SpringBoot生成日志文件

Spring Boot系列——日志配置

SpringBoot默认日志框架配置

springboot(十)使用LogBack作为日志组件

Springboot — 用更优雅的方式发HTTP请求(RestTemplate详解)

spring注解之@Import注解的三种使用方式

spring boot启动原理

原文地址:https://www.cnblogs.com/wangwangfei/p/6201592.html