@Configuration
加上这个注解,声明一个类是配置类,可以在该类下面配置bean
配置类本身也是组件
proxyBeanMethods=true 默认值 需要bean的时候直接从容器中拿 单例
proxyBeanMethods=false 不是单例
//proxyBeanMethods=true
//从容器中拿的,所以是单例
Cat cat01 = run.getBean("cat", Cat.class);1
Cat cat02 =run.getBean("cat",Cat.class);
System.out.println(cat01==cat02);//true
//从容器中拿的
//代理对象调用方法,如果容器中有,就直接拿,若果没有,就新创建。
MyConfig bean = run.getBean(MyConfig.class);
Cat cat1 = bean.getCat();
Cat cat2 = bean.getCat();
System.out.println(cat1==cat2);
上面测试:
在proxyBeanMethods=true情况下,结果为 true.
原因:代理对象调用方法,如果容器中有,就直接拿,若果没有,就新创建。 简单来说,就是单例模式
在proxyBeanMethods=false情况下,结果为 false
原因:非单例模式
full模式和lite模式
full模式:就是proxyBeanMethods=true,单例
使用场景:组件之间有依赖关系
lite模式:就是proxyBeanMethods=false,非单例。减少组件依赖
使用场景:组件之间无依赖关系,启动较快