MainApplication.java
@SpringBootApplication类就是—主程序类,告诉你这是一个SpringBoot应用
@SpringBootConfiguration—就是Configuration,当前一个配置类
@EnableAutoConfiguration—
@AutoConfigurationPackage自动配置包,包含@Import导入包-利用register给容器中导入一系列组件,将指定的一个包下的所有组件导入进来,就是application包下的组件导入进来
@ComponentScan()–包扫描,括号里面默认是扫描application 所在包下的所有文件以及子包下面的所有文件,当然可以在括号下面自定义
MyConfig.java
1.配置类里面使用@Bean标注在方法上给容器注册组件,默认 也是单实例的
2.配置类本身也是组件
3.proxyBeanMethods:代理Bean的方法
Full(proxyBeanMethods=true)—默认,代理对象调用方法,SpringBoot总会检查这个组件是否在容器中,保持组件单实例,外部无论对配置类中的这个组件注册方法调用多少次都是之前注册容器中的单实例对象
Lite(proxyBeanMethods=false)----轻量级
解决了组建依赖的问题,如果你的这个组件会被其他组建依赖就设置成true,如果不被其他组建依赖就设置成false,这样就不会检查容器中有没有这个组件,启动会快
@Configuration 告诉SpringBoot这是一个配置类 ==配置文件xml
@Bean 给容器中添加组件。以方法名作为组件的id。返回类型就是组件类型,返回的值就是组件在容器中的实例,
@Bean(tom)自定义组件,因为原本的组件默认方法名
注:用户类依赖于tom类,proxyBeanMethods=true的情况下,用户类创建的cat属性这个cat对象就是容器中的那个cat对象。
4.@Import(User.class) 导入组件—给容器中自动添加这个类型的构造方法,默认组建的名字是全类名
@Conditional 根注解条件装配,@ConditionalOnBean(name=“tom”) 如果容器中没有组件tom,就不会注册下面所有的配置
5.@ImportResource 导入Spring的配置文件xml文件 ,让他进行生效
6.
第一种:
@Component就表示组件在容器中,只有在容器中的组件才会拥有SpringBoot提供的强大功能
@ConfigurationProperties 配置属 性(prefix前缀,就是跟配置文件中的哪个属性一一绑定)prefix前缀这个里面的值是在application.properties文件中的相对应
第二种:
配置文件中写@EnableConfigurationProperties(Car.class)
开启了Car配置绑定功能,把这个Car这个组件自动注册到容器中
相当于不用再java文件中写Component组件,因为有时候是导入的第三方包