一.条件注解@Conditional,组合注解,元注解 1. @Conditional:满足特定条件创建一个Bean,SpringBoot就是利用这个特性进行自动配置的. 例子: 首先,两个Condition,判断当前系统是否是Windows或者Linux(True False) 然后,2个ListService实现类,表明不同系统下的ListService实现. 主要,ConditionConfig使用了Java配置与@Conditional注解,根据LinuxCondition,或者Wind…
之前有说到springboot自动装配的时候,都是去寻找一个XXXAutoConfiguration的配置类,然而我们的springboot的spring.factories文件中有各种组件的自动装配类,到底哪些应该生效,哪些又不生效呢?这个时候就要用到spring提供的条件注解了. 比如: @ConditionalOnJava                               系统的java版本是否符合要求 @ConditionalOnBean                    …
一.条件注解@Conditional 在之前的学习中,通过活动的profile,我们可以获得不同的Bean.Spring4提供了一个更通用的基于条件的Bean的创建,即使用@Conditional注解. @Conditional根据满足某一个特定条件创建一个特定的Bean.比方说,当某一个jar包在一个类路径下的时候,自动配置一个或多个Bean:或者只有某个Bean被创建才会创建另外一个Bean.总的来说,就是根据特定条件来控制Bean的创建行为,这样我们可以利用这个特性进行一些自动的配置. 下…
什么是依赖注入 在以前的java开发中,某个类中需要依赖其它类的方法时,通常是new一个依赖类再调用类实例的方法,这种方法耦合度太高并且不容易测试,spring提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过spring容器帮我们new指定实例并且将实例注入到需要该对象的类中. 依赖注入的方式 依赖注入有3种方式:构造器注入.set注入和注解注入. 1.构造器注入 构造器注入保证一些必要的属性在Bean实例化时就得到设置,并且确保了Bean实例在实例化后就可以使用. 使用方式: 在类中,…
一.写SpringUtil类来获取Springh管理的类实例,判断是否注入成功,如果没有注入成功重新获取注入 package com.util; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.sp…
一.容器功能 1.1 组件添加 1. @Configuration Full模式:获取对象时,首先在容器内搜索是否存在,如存在直接拿出 默认为Full模式,单例 配置类组件之间有依赖关系,方法会被调用得到之前单实例组件,用Full模式 @Configuration(proxyBeanMethods = true) Lite模式:获取对象时,直接创建新对象 多例 配置 类组件之间无依赖关系用Lite模式加速容器启动过程,减少判断 @Configuration(proxyBeanMethods =…
官方参考的配置属性:https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#common-application-properties 自动配置原理: 1.springboot启动的时候加载主配置类,开启配置功能 @EnableAutoConfiguration 2.@EnableAutoConfiguration作用 2.1 利用EnableAutoConfigurationImportSel…
最近在知乎上面看到一篇关于程序员面试的问题,面试官问我们一般有几种注入的方法,这几种注入的方法分别在什么时候运用比合理,当时我看到这个时候懵逼了,由于我自己也是刚刚接触springboot不久,所以就自己在平时运用的上面总结了一些知识点常用的几种springboot的注入方法,由于我是一个小萌新,所只要是能够起道注入的方法的注解我都列出来,有可能会有错,希望大家能够及时提出来我来解决: @Autowired @Resource @Component @Configuration @Qualifi…
一.前提 已经存在一个redis-sentinel集群,两个哨兵分别如下: /home/redis-sentinel-cluster/sentinel-1.conf port 26379 dir "/data" sentinel monitor mymaster 172.16.1.11 16379 2 sentinel down-after-milliseconds mymaster 5000 sentinel failover-timeout mymaster 5000 sentin…
springboot用@Autowired和@PostConstruct注解把config配置读取到bean变成静态方法 @SpringBootApplication public class SendEmailApplication implements CommandLineRunner{ public static Configs conf; @Autowired private Configs conf2; @PostConstruct public void initconf() {…