SpringBoot --附包扫描、自动装配原理(面试题)
创始人
2025-01-10 03:05:49
0次

前言

springboot也是spring公司开发的框架,目的是为了简化spring项目的初始化搭建

spring项目搭建缺点:配置麻烦 || 依赖 || tomcat启动速度慢

springboot特点

自动配置:springboot自动配置是一个运行时的过程,考虑众多因素,决定spring配置该用哪个,该过程是springboot自动完成

起步依赖:起步依赖本质是一个Maven项目对象模型,定义对其他库的传递依赖,这些东西加在一起即支持某项功能,起步依赖就是将具备某种功能的坐标打包到一起,并提供一些默认功能

辅助功能:提供大型项目中常见的非功能性特性,如嵌入服务器,外部配置等

springboot常用的配置文件

配置文件分为yaml和properties两种格式 || 两种格式前缀名都应是application

如果两个文件同时存在,重复的内容采用properties文件,非重复内容会互相拼接

yaml

server:    port: 8080	#端口号   servlet:      context-path: /bbb	#上下文路径

properties

server.port = 8080	#端口号 server.servlet.context-path=/aaa	#设置上下文路径

java读取配置文件内容

springboot提供了两种注解用于读取配置文件信息的方式

#如配置文件信息 student:  name: aa age: 18 sex: nan hobby: 	#list等非基本类型存储方法,也可用逗号swing,running效果相同  -swing	#在properties中使用student.hobby[0]=swing	student.hobby[1]=running	也可用逗号格式同上  -running

一、@ConfigurationProperties

使用在类上@ConfigurationProperties(prefix="信息前缀")

可一次解析所有该前缀属性信息

@ConfigurationProperties(prefix="student") @Component	//该类由spring创建,在创建时自动读取配置文件中前缀为student的属性 public class Student{     private String name;     private int age;     private String sex;     private List hobby; }

二、@Value

只能解析基本类型和字符串类型,一次解析一个属性

@Value("${student.name}") private String name; @Value("${student.age}") private String age;

profile多环境配置

开发springboot时,通常同一套程序会在不同环境下使用,不同环境可能端口配置等都不相同,如每次打包都要修改配置文件会非常麻烦,可以用profile功能进行动态配置切换

首先创建文件

在原有application文件的基础下继续创建(application-后名字不固定,跟随自己起名特点): application-dev.properties --开发环境配置文件

            application-test.properties --测试环境配置文件

            application-pro.properties --生产环境配置文件

将相同内容放入原properties中,需要在不同环境下更改的信息放入对应配置文件中

激活方式

分为两种:一种是在配置文件中启用,一种是部署时通过命令行参数激活

//一、application配置文件中启用 spring.profiles.active=pro	//test	||	dev	使用-后名字即可 //二、jar包部署时通过命令行参数激活 java -jar xxx.jar --spring.profiles.active=dev

springboot注册web组件

web组件就是servlet.filter组件

用springboot之前的servlet步骤: 1、创建一个类并继承HttpServlet重写service方法

                                                        2、注册web.xml文件

    自己的servlet或第三方       

创建一个Servlet

public class Servlet extends HttpServlet{     protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{         sout("代码块")     } }

Config包下创建ServletConfig

访问/my路径测试

@Configuration	//表示该类为配置类,和xml配置文件效果相同 public class ServletConfig{    @Bean	//等价于标签.     public ServletRegistrationBean  myServlet(){         ServletRegistrationBean bean=new ServletRegistrationBean();         bean.setServlet(new Servlet());         bean.setName("my");         bean.setLoadOnStartup(1);         bean.addUrlMappings("/my");         return bean;     } }

springbot包扫描的原理

springboot自带包扫描功能。核心在主类的@SpringBootApplication上,它是一个复合注解。里面包含@EnableAutoConfiguration开启自动配置,更深一层又包含@AutoConfigurationPackage,@Import({AutoConfigurationPackages.Registrar.class})需要导入一个自动配置包的类。加载主类所在的包,并按照该包进行扫描。

如果不想使用该包扫描可以在主类上使用ComprntScan(bassPackages={路径})来指定自己的包

springboot自动装配原理(面试题)

在run方法中传入SpringBootApplication注解类,该类包含EnableAutoConfiguration注解,开启自动配置功能,其中包含import注解,该注解需要导入AutoConfigurationImportSelector自动配置选择器类,该类会自动装载一些自动配置类,这些配置类会完成相应的自动装配

相关内容

热门资讯

每日必看!江岸多玩到底能开挂吗... 每日必看!江岸多玩到底能开挂吗(辅助挂),江岸多玩原来真的有辅助挂讲义1、江岸多玩脚本辅助下载、江岸...
玩家交流!颖河竞技怎么开挂(外... 玩家交流!颖河竞技怎么开挂(外挂),颖河竞技好像是有外挂教材一、颖河竞技游戏安装教程牌型概率发牌机制...
最新通报!皮皮四川麻将软件下载... 最新通报!皮皮四川麻将软件下载(辅助挂),皮皮四川麻将果然有辅助挂模块1、操作简单,无需皮皮四川麻将...
一分钟揭秘!52游戏开挂脚本(... 一分钟揭秘!52游戏开挂脚本(透视挂),52游戏切实有透视挂法子52游戏脚本下载中分为三种模型:52...
一分钟快速了解!堆堆乐开挂破解... 一分钟快速了解!堆堆乐开挂破解(外挂),堆堆乐竟然真的有外挂方针1、下载好堆堆乐正确养号方法之后点击...
重大通报!汇城贵州麻将开挂脚本... 重大通报!汇城贵州麻将开挂脚本(开挂),汇城贵州麻将原来真的有开挂法门1、重大通报!汇城贵州麻将开挂...
盘点一款!七色城透视挂件(外挂... 盘点一款!七色城透视挂件(外挂),七色城切实是真的有外挂经验1、全新机制【七色城ai辅助工具激活码】...
今日头条!多多休闲透视软件下载... 今日头条!多多休闲透视软件下载(外挂),多多休闲确实是真的有外挂攻略1、首先打开多多休闲辅助器下载最...
关于!钱柜麻将真的有透视吗(辅... 关于!钱柜麻将真的有透视吗(辅助器),钱柜麻将一贯是有辅助器练习钱柜麻将能透视中分为三种模型:钱柜麻...
今日焦点!河北家乡棋牌辅助工具... 今日焦点!河北家乡棋牌辅助工具(外挂),河北家乡棋牌果然是有外挂手册小薇(辅助器软件下载)致您一封信...