springboot注解种类繁多, 需要做一个归类解释, 学习归纳。
@Component
@ConditionalOnMissingBean(V2.class)
@ConfigurationProperties(prefix = “checkunit.v2.fossbot”)
public class V1 extends V {
private String gateway;
@Value(“${a.b.c}”)
private String token;
private String pbiId;
private String scanFileInfoTable;
}
Component注解会将这个类装在到容器中
public abstract class FossbotClient {
}
@Resource
private V v;
Resoure注解
会去容器里面找bean对象
Component和Resource一个负责注入, 一个负责加载, 交给spring 容器去进行管理, 由他来进行创建和管理。
他和直接进行new 的区别在于, 自己new的对象, 里面的属性值要自己注入,但是交给spring容易之后, 可以通过@value, @ConfigurationProperties等方式来进行属性加载, 十分方便
@Configuration
public class LogLevelListenerAutoConfiguration {
@Resource
private LoggingSystem loggingSystem;
@Bean
@ConditionalOnExpression("!'${log.level.dynamic.disable:}'.equals('true')")
public LogLevelListener buildLogLevelListener() {
return new LogLevelListener(loggingSystem);
}
}
// 这里的@Bean和@Configuration配合将LogLevelListener注入容器中
@Configration 注解:声明当前类是一个配置类,相当于 Spring 中的一个 XML 文件
@Bean 注解:作用在方法上,声明当前方法的返回值是一个 Bean
public class LogLevelListener {
private LoggingSystem loggingSystem;
/**
* 动态设置日志级别
* 只设置级别时内容为日志级别。例如:INFO、ERROR
* 当需要对某一个包单独设置时,通过json格式来指定。例如:
* 设置com.huawei.it.security.kiacheck.task.listener.NoticeListener打debug日志,
* {"dynamicLevel":"DEBUG", "loggerName":"com.huawei.it.security.kiacheck.task.listener.NoticeListener"}
*
* @param dynamicLogInfo the dynamic log info
*/
@Value("${log.dynamicLevel:}")
public void onChange(String dynamicLogInfo) {
// 设置日志级别
setDynamicLevel(dynamicLogInfo);
}
}
`