@configuration使用方法,在MainApplication同级目录下新建一个 config包,包中写一个类为Myconfig,并且标注@configuration,标注这是一个配置类,Springboot基本上都是基于注解的形式开发,省去了配置文件冗余的配置.
beans和config包在主类的同级目录,则springboot会自动扫描类,给MyConfig类添加一个@configuration注解,标识为配置类,配置的类同样也是一个组件,组件的id就是小写字母开始的方法名.@Bean ,给容器中添加组件。以方法名作为组件的id。返回类型就是组件类型。返回的值,就是组件在容器中的实例@Bean注解括号里面不写东西的话,组件id就是对应的方法名称,若里面加了东西就是括号里面的内容.配置类里面使用@Bean标注在方法上给容器注册组件,默认也是单实例的,配置类本身也是实例.
Cat类
Dog类
配置类
Full模式和Lite模式:
full模式默认的 proxyBeanMethods = true 代理对象调用方法。SpringBoot总会检查这个组件是否在容器中有并且保持组件单实例.外部无论对配置类中的这个组件注册方法调用多少次获取的都是之前注册容器中的单实例对象
我们使用full模式,获取bean实例,发现各实例对象都是一样
而使用Lite模式虽然俩次获取的实例bean都是相等的,都是单例但是外部调用的对象都是不同的对象.