springboot @Configuration 简单理解
Posted 霜序0.2℃
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot @Configuration 简单理解相关的知识,希望对你有一定的参考价值。
springboot @Configuration 简单理解
https://www.bilibili.com/video/BV19K4y1L7MT?p=8&spm_id_from=pageDriver
spring中可以用xml来配置bean,而在springboot中,可以用加上了@Configuration
注解的java类来配置bean
用法:
@Configuration
public class MyConfig {
@Bean
public Cat cat1() {
Cat cat = new Cat();
return cat;
}
}
和spring中xml效果是一样的
查看该注解的源码:
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Configuration {
@AliasFor(
annotation = Component.class
)
String value() default "";
boolean proxyBeanMethods() default true;
}
其中有一个参数proxyBeanMethods
,中文是代理Bean的方法
在spring中,如果没有指定,默认从容器中进行创建是单例模式,即每次创建Cat都是同一个对象,除非指定使用原型模式
默认参数是true,即使用单例模式,和spring中一样
配置类(被注解Configuration标记的类)是被CGLIB增强的代理对象
引申出Configuration的两种配置:Full
,Lite
,Full就是proxyBeanMethods
参数为true,Lite就是false
spring懒加载
因为spring在容器初始化的时候会进行bean的创建,当bean的数量极多的时候一一创建耗时也耗空间,而且创建出来的bean都不知道什么时候才能用到,所以spring针对这个情况提供了
懒加载机制
,即容器初始化时不创建bean,用到bean的时候再创建以上的情况是单例的bean,多例的bean本来就是在使用时才创建
SpringAOP底层原理
两种情况的动态代理
- 有接口
- 没有接口
有接口用JDK动态代理:
即,给被代理的类重新创建实现了接口的代理类,在代理类中调用被代理类的方法,并作修改
没有接口用CGLIB动态代理(CGLIB是一个强大的高性能的代码生成包):即,给代理类创建一个子类,并在代理类中修改代码
以上是关于springboot @Configuration 简单理解的主要内容,如果未能解决你的问题,请参考以下文章
Springboot@Configuration和@Bean详解
springboot之additional-spring-configuration-metadata.json自定义提示