不知道理解正确不正确,只用于记录
@Component 和 @Bean 的区别
1.作用对象不同:
@Component 注解作用于类,而 @Bean 注解作用于方法
2.@Component 通常是通过路径扫描来自动侦测以及自动装配到 Spring 容器中(我们可以使用 @ComponentScan 注解定义要扫描的路径从中找出标识了需要装配的类自动装配到 Spring 的 bean 容器中)。@Bean 注解通常是我们在标有该注解的方法中定义产生这个 bean,@Bean 告诉了 Spring 这是某个类的实例,当我们需要用它的时候还给我。
3.@Bean 注解比 @Component 注解的自定义性更强,而且很多地方我们只能通过 @Bean 注解来注册 bean。比如当我们引用第三方库中的类需要装配到 Spring 容器时,只能通过 @Bean 来实现。
@Configuration :配置类注解
这个注解相当于以前spring的xml配置文件,作用在类上面,此类中可以添加一些bean实例,被springIOC管理,可以使用 @ComponentScan 注解自行配置组件扫描,类似于以前xml中的<bean>标签
Autowire 和 @Resource 的区别
1.@Autowire 和 @Resource都可以用来装配bean,都可以用于字段或setter方法。
2.@Autowire 默认按类型装配
默认情况下必须要求依赖对象必须存在,如果要允许 null 值,可以设置它的 required 属性为 false
3.@Resource 默认按名称装配
当找不到与名称匹配的 bean 时才按照类型进行装配。名称可以通过 name 属性指定,如果没有指定 name 属性,当注解写在字段上时,默认取字段名,当注解写在 setter 方法上时,默认取属性名进行装配。
@EnableConfigurationProperties
@EnableConfigurationProperties注解的作用是:
使使用 @ConfigurationProperties 注解的类生效.
一般来说获取配置文件会使用 @ConfigurationProperties 加@Compoment,如果只使用了@ConfigurationProperties,而没有使用@Component,那么在IOC容器中是获取不到properties 配置文件转化的bean。 @EnableConfigurationProperties 相当于把使用 @ConfigurationProperties 的类进行了一次注入,这样spring在启动项会少一个bean实例,变相类似于按需加载。
@ConditionalOnBean
如果容器中加载了某个bean 那么加载当前注解的bean,反之则返回空
@ControllerAdvice :处理全局异常利器
默认情况下,@ControllerAdvice 中的方法应用于全局所有的 Controller。而使用选择器 annotations(),basePackageClasses() 和 basePackages() (或其别名value())来定义更小范围的目标 Controller 子集.
@ControllerAdvice 最常使用的是结合 @ExceptionHandler 用于全局异常的处理,可以给前端更舒适的数据返回。