首页 > 编程语言 >java面试题--springboot

java面试题--springboot

时间:2023-04-25 15:47:46浏览次数:50  
标签:容器 面试题 java -- 模式 bean 实例 Import 轻量级

一、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配套使用。

标签:容器,面试题,java,--,模式,bean,实例,Import,轻量级
From: https://www.cnblogs.com/aleda-territory/p/17352801.html

相关文章

  • 记php调用chatgpt接口
    $openai_api_key='your_openai_api_key_here';$engine='davinci';//ChatGPT中的AI模型名称$prompt='Hello,canyouhelpme?';//ChatGPT中的提示信息//构造请求数据$data=array('model'=>$engine,'prompt&#......
  • 使用vant4+vw创建webapp项目
    包来源自动引入vue/vue-router/vuex等api (ref,toRefs....)npmiunplugin-auto-import--save-devvant按需导入的插件npmiunplugin-vue-components-D使用vw布局替换px单位插件npmipostcss-px-to-viewport--save-dev完整的vite.config.js文件import{......
  • Django(五)
    Django(五)request对象#GETPOSTFILESmethodpathpath_infoget_full_path()bodydefindex(request):print(request.path)#/index/print(request.path_info)#/index/print(request.get_full_path_info())#接收路径的全部内容连参数也能拿到pr......
  • Django 如何使用 Celery 完成异步任务或定时任务
    以前版本的Celery需要一个单独的库(django-celery)才能与Django一起工作,但从Celery3.1开始,情况便不再如此,我们可以直接通过Celery库来完成在Django中的任务。安装Redis服务端以Docker安装为例,安装一个密码为mypassword的Redis服务端dockerrun-itd--name......
  • 【Shell】字符串
    单引号和双引号shell字符串可以用单引号'',也可以用双引号“”,也可以不用引号。单引号的特点单引号里不识别变量单引号里不能出现单独的单引号(使用转义符也不行),但可成对出现,作为字符串拼接使用。双引号的特点双引号里识别变量双引号里可以出现转义字符综上,推荐......
  • 毕业5年的同学突然告诉我,他已经是年薪30W的自动化测试工程师....
    作为一名程序员,都会对自己未来的职业发展而焦虑。一方面是因为IT作为知识密集型的行业,知识体系复杂且知识更新速度非常快,“一日不学就会落后”。​另外一方面,IT又是劳动密集型的行业,不仅业人员多,而且个人在平时的开发过程中有大量的重复劳动(如CRUD),自己的能力没有随年龄的增加而......
  • 常用mybatis语法
    接口名与SQL格式List<String>selectByService(@Param("serviceCode")stringCode,@Param("serviceName")stringName);<selectid="selectByService"resultType="java.lang.String"></select>模糊查询likeconcat(&......
  • day 16 求车速
    1.使用数组存储每一位数;2.依次遍历95859到100000的所有数;3.当满足条件后输出目标数;#include<iostream>usingnamespacestd;intmain(){intT=95860;for(;T<100000;T++){if(T/10000==T%10&&T/1000%10==T/10%10){printf("新的对称数为%d\n",T);......
  • Java中不同对象调用该实例方法返回值是同一个地址空间吗?
    结论不管是基本类型还是引用类型都是新开辟的内存空间即返回的不是同一个地址空间不然操作返回值A变量直接影响到返回值B变量'=='基本比较的是两者的值是否相同而引用类型比较两者的是引用地址是否相同基本类型返回的值相同'=='就为truepublicintm1(){ return-1;......
  • git branch管理
    目录Git分支管理新建分支查看分支切换分支删除分支合并分支Git分支管理新建分支gitbranch[branchName]新建一个分支,但是仍然在当前分支不会自动切换到新建的分支gitcheckout-b[branchName]会自动新建并切换到该分支,等于gitbranch[branchName];gitcheckout[bran......