javaspring面试题-@SpringBoot
2024-05-21 13:41:02
@Component 通⽤的注解,可标注任意类为 Spring 组件
@Service 在业务逻辑层使用(service层)
@Repository 在数据访问层使用(dao层)
@Controller 在展现层使用,控制器的声明(controller层)
注入bean的注解
@Autowired:默认按照类型来装配注入,**@Qualifier**:可以改成名称
@Resource:默认按照名称来装配注入,JDK的注解,新版本已经弃用
@Autowired注解原理
@Autowired的使用简化了我们的开发,
实现 AutowiredAnnotationBeanPostProcessor 类,该类实现了 Spring 框架的一些扩展接口。
实现 BeanFactoryAware 接口使其内部持有了 BeanFactory(可轻松的获取需要依赖的的 Bean)。
实现 MergedBeanDefinitionPostProcessor 接口,实例化Bean 前获取到 里面的 @Autowired 信息并缓存下来;
实现 postProcessPropertyValues 接口, 实例化Bean 后从缓存取出注解信息,通过反射将依赖对象设置到 Bean 属性里面。
@SpringBootApplication
●@SpringBootConfiguration: 底层是Configuration注解,说白了就是支持JavaConfig的方式来进行配置
●@EnableAutoConfiguration:开启自动配置功能
●@ComponentScan:就是扫描注解,默认是扫描当前类下的package
其中@EnableAutoConfiguration是关键(启用自动配置),内部实际上就去加载META-INF/spring.factories文件的信息,然后筛选出以EnableAutoConfiguration为key的数据,加载到IOC容器中,实现自动配置功能!
它主要加载了@SpringBootApplication注解主配置类,这个@SpringBootApplication注解主配置类里边最主要的功能就是SpringBoot开启了一个@EnableAutoConfiguration注解的自动配置功能。
@EnableAutoConfiguration作用:
它主要利用了一个
EnableAutoConfigurationImportSelector选择器给Spring容器中来导入一些组件。