Spring 的原理探究
1. Spring中的Bean默认是单例的还是多例的 ? 哪这个默认的bean是什么时候创建的 ? 如果要设置Bean的作用域为非单例的该怎么设置 ?
默认是单例的,程序运行的时候创建bean,需要用到注解@Scope (prototype)
2. Spring中的声明bean的注解有哪些 ? 这些注解的区别及应用场景 ?
@Compoent : 定义在类上实例化bean,并把当前类对象的实现类交给spring容器进行管理,bean对象是类名的首字母小写。
@Repository : 定义在数据访问层DAO,bean对象是类名的首字母小写。
@Mapper : 定义在Mapper层接口,把mapper层的对象交给IOC容易,bean对象是类名的首字母小写。
@Bean : bean是默认值是方法返回值,一般引入第三方插件的时候需要用到这个注解,bean对象是类名。
3. 简单聊聊你对SpringBoot理解 (其实该问题的重心就是SpringBoot自动配置的原理) ?
springboot 是基于spring的独立应用程序的框架。它采用了自动配置的原则,简化了开发,便于程序的维护,提高系统的稳定西。所谓的自动化配置,就是在启动类上用到了那个@SpringBoot的注解,其底层核心用到了三个注解,一个是compoentscan 扫描bean对象,范围是当前包及其子包,还有一个是Springbootconfiguration,声明这是一个配置类,还有最为核心的是Enableautuconfiguration,里面封装了一个Import,import里面装了一个,AutoConfigurationImportSelector实现类,而在程序一运行的时候会自动在mete-info目录下有一个spring的文件夹里面装了很多bean对象,而这些bean对象在程序运行的时候会自动注入到IOC容器里面,但是在使用bean对象的时候会有条件的,@conditional注解会判断本机是否装在了相关依赖,去要不要实现依赖注入。