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实现不同环境的配置
四、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(查询、插入、删除)
Spring Boot MongoDBTemplate 增删改查
基于SpringBoot 框架MongoDB 一些简单的查询方式
mongodb链接
mongodb://username:password@host:port/db_name
参考资料