【spring】
@Qualifier
在Controller中需要注入service那么我的这个server有两个实现类如何区分开这两个impl呢?
Qualifier的意思是合格者,通过这个标示,表明了哪个实现类才是我们所需要的,添加@Qualifier注解,需要注意的是@Qualifier的参数名称为我们之前定义@Service注解的名称之一。
使用@resource注入时比较简单了注解自带了“name”的val就是@Service注解的名称之一。
https://blog.csdn.net/qq_36567005/article/details/80611139
@Component 最普通的组件,可以被注入到spring容器进行管理,如果想使用自定义的组件注解
@Repository 作用于持久层
@Service 作用于业务逻辑层
@Controller 作用于表现层(spring-mvc的注解)
https://blog.csdn.net/fansili/article/details/78740877
@Bean
注解在返回实例的方法上,如果未通过@Bean指定bean的名称,则默认与标注的方法名相同;
@Resource
作用:用来装配bean,可以写在字段上或者setter方法上。默认按照名称来装配注入,找不到名称时按照类型来装配注入。
https://blog.csdn.net/yuyeqianhen/article/details/90177597
@Component 作用于类,@Bean作用于方法。
@Component和@Bean都是用来注册Bean并装配到Spring容器中,但是Bean比Component的自定义性更强。可以实现一些Component实现不了的自定义加载类。
https://blog.csdn.net/weixin_42493179/article/details/86584341
@Documented
注解标记的元素,Javadoc工具会将此注解标记元素的注解信息包含在javadoc中。
==============
组合注解
【springboot注解】
@ConfigurationProperties 批量注入配置文件中的属性
@Value 一个一个注入
https://blog.csdn.net/clmmei_123/article/details/81871836
@EnableAutoConfiguration
自动载入应用程序所需的所有Bean——这依赖于Spring Boot在类路径中的查找。
从classpath中搜索所有META-INF/spring.factories配置文件然后,将其中org.springframework.boot.autoconfigure.EnableAutoConfiguration key对应的配置项加载到spring容器
只有spring.boot.enableautoconfiguration为true(默认为true)的时候,才启用自动配置
https://blog.csdn.net/l18848956739/article/details/100692163
Spring中也有一种类似与Java SPI的加载机制。它在META-INF/spring.factories文件中配置接口的实现类名称,然后在程序中读取这些配置文件并实例化。这种自定义的SPI机制是Spring Boot Starter实现的基础。
https://blog.csdn.net/lldouble/article/details/80690446
@EnableTransactionManagement
Spring Boot的事务管理注解@EnableTransactionManagement的使用
RefreshScope(org.springframework.cloud.context.scope.refresh)是spring cloud提供的一种特殊的scope实现,用来实现配置、实例热加载。
https://www.jianshu.com/p/188013dd3d02
需要热加载的bean需要加上@RefreshScope注解,当配置发生变更的时候可以在不重启应用的前提下完成bean中相关属性的刷新。
https://blog.csdn.net/weixin_40318210/article/details/87954179
@Configuration
用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器。
@ConditionalOnProperty
作用在类上
https://www.cnblogs.com/duanxz/p/7493276.html
@Configuation等价于<Beans></Beans>
@Bean等价于<Bean></Bean>
@ComponentScan等价于<context:component-scan base-package=”com.dxz.demo”/>
https://blog.csdn.net/BinshaoNo_1/article/details/85005935
@Configuration 注解本质上还是 @Component
虽然Component注解也会当做配置类,但是并不会为其生成CGLIB代理Class,所以在生成Driver对象时和生成Car对象时调用car()方法执行了两次new操作,所以是不同的对象。当时Configuration注解时,生成当前对象的子类Class,并对方法拦截,第二次调用car()方法时直接从BeanFactory之中获取对象,所以得到的是同一个对象。
原文链接:https://blog.csdn.net/long476964/article/details/80626930
一句话概括就是 @Configuration 中所有带 @Bean 注解的方法都会被动态代理,因此调用该方法返回的都是同一个实例。
https://blog.csdn.net/isea533/article/details/78072133
@ConditionalOnProperty
可以通过配置文件中的属性值来判定configuration是否被注入
在spring boot中有时候需要控制配置类是否生效,可以使用@ConditionalOnProperty注解来控制@Configuration是否生效.
==============
【springcloud注解】
@EnableDiscoveryClient和@EnableEurekaClient
共同点就是:都是能够让注册中心能够发现,扫描到改服务。
不同点:@EnableEurekaClient只适用于Eureka作为注册中心,@EnableDiscoveryClient 可以是其他注册中心。
https://blog.csdn.net/zheng199172/article/details/82466139