java面试题--springboot

一、SpringBoot自动装配原理是什么?

  1. @SpringBootApplication
  2. @EnableAutoConfigration\@SpringBootConfigration\@ComponentScan
  3. @AutoConfigrationPackage\@Import
  4. META-INF\spring.factories

二、说一下@Configuration中的属性proxyBeanMethods的作用?

首先,引入两个概念:Full 全模式。Lite 轻量级模式

  1. Ful 全模式:proxyBeanMethods=true。该模式下注入容器中的同一个组件,无论被取出多少次都是同一个bean实例,即单实例对象。在该模式下SpringBoot每次启动时都会检查容器中是否存在@Bean修饰的组件。
  2. Lite 轻量级模式:proxyBeanMethods=false. 该模式下注入容器中的同一个组件,每次被取出会是一个新的bean实例,即多实例对象。在该模式下SpringBoot启动时不会检查容器中是否存在@Bean修饰的组件。

使用场景

  1. Full 全模式:当在同一个Configuration配置类中,注入到容器中的bean实例之间有依赖关系时,使用全模式。
  2. Lite 轻量级模式:当在同一个Configuration配置类中,注入到容器中的bean实例之间没有依赖关系时,使用轻量级模式,提高springboot的启动速度和性能。

默认

proxyBeanMethods=true

三、说一下对@Import注解的理解?

@Import的用法:

  1. import一个普通类,Spring会将该类加载到Spring容器中。
  2. import一个类,该类实现了ImportBeanDefinitionRegistrar接口,在重写registerBeanDefinitions方法中,能拿到BeanDefinitionRegistry注册器,手动往beanDefinitionMap中注册beanDefinition。
  3. import一个类,该类实现了ImportSelector接口,重写selectImports方法,该方法返回String[]数组对象,数组中的类都会被注入到Spring容器中。
  4. @Import在使用时可以声明在JAVA类上,或者作为元注解使用(即声明在其他注解上)

使用场景

 

  1. 用法二适用于Spring-mybatis中,扫描dao信息,生成代理类信息。
  2. 用法三适用已Springboot的自动装配当中,扫描自动配置类的信息。

注意事项

@Import在使用时,必须要保证能被IOC容器扫描到,所以通常它会和@Configuration或者@ComponentScan配套使用。

posted @ 2023-04-25 15:30  翊梦  阅读(41)  评论(0)    收藏  举报