java springboot经典面试题分享

1. SpringBoot 简介

      SpringBoot 是简化 Spring 应用开发的一个框架。他整合了 Spring 的技术栈,提供各种标准化的默认配置。使得我们可以快速开发 Spring 项目,免掉 xml 配置的麻烦。降低 Spring 项目的成本。

2. SpringBoot 的优缺点

使编码配置部署都变得很简单。

重点是自动装配、面试官经常问。

缺点可能就是自动注入的 bean ,有可能会冲突。

3. SpringBoot 固定版本

通过 dependcy 来固定,因为可能当前项目已经有父项目。

4. SpringBoot 的使用方式

maven 中父项目导入 Springboot 的启动器。然后编写一个主程序打上 SpringBootApplication 注解。通过 run 方法就可以启动。

5. SpringBoot 自动配置原理

底层源码解析是:首先启动类上面有一个 SpringBootApplication 注解,点进去之后,又 EnableAutoConfiguration 注解。然后再进去,发现有个 @Import 注解,其导入的是 EnableAutoConfigurationImportSelector 类。这个类,他是集成了一个抽象的 AutoConfigutationimportSelector 。再往上就是接口 ImportSelector 。然后如果实现了接口的 selectImport 接口就会将其中的返回的数组全部加载到 Spring 容器中。其中实现的最主要的地方是 getCandidateConfigurations 方法。那个方法内部实现就是回去读取 meta-inf 下的 spring.factories 。所以主要在那里面配置的类就都会被自动加载。

6.@PropertySource

加载指定的配置文件。如果不声明的话,将从主配置文件加载。这样做的好处是灵活处理加载配置文件、主要是针对springboot打成JAR包之后不能编辑的问题、加入外部配置文件灵活处理。

7.@ImportResource

@ImportResource注解用于导入Spring的配置文件,让配置文件里面的内容生效;(就是以前写的springmvc.xml、applicationContext.xml)

导入 Spring 的配置文件,让配置文件里面的内容生效;这种方式比如一个类没有使用 @Componet 注解注册进容器,则使用自动装配 autowired 找不到。引入文件后,即可找到。

Spring Boot 里面没有 Spring 的配置文件,我们自己编写的配置文件,也不能自动识别;

想让 Spring 的配置文件生效,加载进来; @**ImportResource** 标注在一个配置类上

package com.yangzhenxu.firstspringboot;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ImportResource;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@ImportResource(locations = "classpath:applicationContext.xml")
@SpringBootApplication
@RestController
public class FirstSpringbootApplication {public static void main(String[] args) {SpringApplication.run(FirstSpringbootApplication.class, args);}}

8. springboot 的 profile 加载

在配置文件的时候,我们可以建立多个。数据库各种环境经常用到、用 - 进行结尾。通过主配置文件,配置 profiles 的 active 就可以指定加载文件。

在同一个文件中, yml 文件支持文档块的写法,为 --- 。

9. SpringBoot 激活指定 profile 的几种方式

直接在配置文件中通过 active 指定

10. SpringBoot 项目内部配置文件加载顺序

顺序如下;

优先级由高到底,高优先级的配置会覆盖低优先级的配置;

SpringBoot 会从这四个位置全部加载主配置文件; ** 互补配置 ** ;

我们还可以通过 spring.config.location 来改变默认的配置文件位置

项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置;指定配置文件和默认加载的这些配置文件共同起作用形成互补配置;

11. SpringBoot 外部配置文件加载顺序

这个挺多的,我们就几个重要的。

高优先级的会覆盖低优先级的。

命令行上的参数配置是优先级最高的。

jar 包外的带 profile 的配置文件。

jar 包内的带 profile 的配置文件。

jar 包外的不带 profile 的配置文件。

jar 包内的不带 profile 的配置文件。

12. Springboot 日志关系

SpringBoot 默认使用的 slf4j+logback 。引入 logging-starter 就可以使用。能自动适配其他日志。只需要将日志里面的 commons-logging 移除。就会自动引入其他日志。

使用 LoggerFactory 可以获得 logger 。通过 logger 就可以记录日志。

日志的一些配置

logging.level.com.atguigu=trace 指定打印级别

logging.file=G:/springboot.log 指定日志生成路径

logging.path=/spring/log 指定日志生成相对路径

logging.pattern.console=%d{yyyy-MM-dd} [%thread] %-5level %logger{50} - %msg%n 指定控制台输出格式

logging.pattern.file=%d{yyyy-MM-dd} === [%thread] === %-5level === %logger{50} ==== 指定文件中日志输出格式

13. SpringBoot 热部署

一般使用 springboot-dev-tool 。通过 ctrl+f9 进行热部署。开启 idea 的自动编译。

14. SpringBoot 的监控

引入 actuatro 的监控器。配置文件需要配置安全关闭。management.security.enabled=false 。可以配置 endpoint 的 shutdown 的 enable 开启,就可以直接关闭了。

15. SpringBoot 整合 redis

使用RedisTemplate提供的方法来操作Redis

添加启动器

<!--redis--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>

配置连接信息

spring:redis:host: 127.0.0.1 port: 6379password: 123456jedis:pool:max-active: 8max-wait: -1max-idle: 500min-idle: 0lettuce:shutdown-timeout: 0

代码测试打印:

@RunWith(SpringRunner.class)
@SpringBootTest
public class Test_1{@Autowiredprivate RedisTemplate<String,String>redisTemplate;@Testpublic void set(){redisTemplate.opsForValue().set("myKey","myValue");System.out.println(redisTemplate.opsForValue().get("myKey"));}
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/562365.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql创建临时表 分页_Mysql 如何创建一张临时表

mysql 利用 temporary 关键字就可以创建出一个临时表。创建的这张表会在与服务器的会话终止时自动消失语法&#xff1a;create temporary table tbl_name...;规则&#xff1a;每个会话只能看到自己创建的临时表&#xff0c;不同的会话可以创建相同表名称的临时表。临时表的表名…

SpringCloud面试题分享

1、什么是Spring Cloud&#xff1f; Spring cloud 流应用程序启动器是基于 Spring Boot 的 Spring 集成应用程序&#xff0c;提供与外部系统的集成&#xff0c;更专注于服务治理。Spring cloud Task&#xff0c;一个生命周期短暂的微服务框架&#xff0c;用于快速构建执行有限数…

基于java SSM springboot动物检疫信息管理系统设计和实现

作者主页&#xff1a;Java李杨勇 简介&#xff1a;Java领域优质创作者、【Java李杨勇】公号作者 简历模板、学习资料、面试题库、技术互助【关注我&#xff0c;都给你】 文末获取源码 主要技术实现&#xff1a;spring、 springmvc、 springboot、 springboot security权限控…

mysql for update场景_一个mysql死锁场景实例分析

前言最近遇到一个mysql在RR级别下的死锁问题&#xff0c;感觉有点意思&#xff0c;研究了一下&#xff0c;做个记录。涉及知识点&#xff1a;共享锁、排他锁、意向锁、间隙锁、插入意向锁、锁等待队列场景隔离级别&#xff1a;Repeatable-Read表结构如下create table t (id int…

mysql timestamp排序_对多个表进行排序MYSQL TimeStamp

编辑&#xff1a; H3>我已经尝试加入表格&#xff0c;在php中使用strtotime对它们进行排序..但我似乎无法获得语法。玩这个代码..但它变得非常复杂&#xff0c;我希望我可以在纯SQL中更容易。它不完整&#xff0c;但是..你可以看到我在想什么。mysql_connect("localhos…

基于java ssm springboot女士电商平台系统源码+文档设计

作者主页&#xff1a;Java李杨勇 简介&#xff1a;Java领域优质创作者、【Java李杨勇】公号作者 简历模板、学习资料、面试题库、技术互助【关注我&#xff0c;都给你】 文末获取源码 主要技术&#xff1a;spring, springmvc, springboot,mybatis, jquery , md5 ,bootstarp.…

mysql创建表定义主键_mysql 创建表并设置主键自增

mysql 创建表并设置主键自增 mysql 创建表: mysql> create table user( -> userid int(4) primary key not null auto_increment, -> username varchar(16) not null, -> userpassword varchar(32) not null -> ); create table log( logid int(4) primary key…

基于java ssm springboot网上蛋糕商城项目设计和实现

&#x1f345; 作者主页&#xff1a;Java李杨勇 &#x1f345; 文末获取源码联系方式&#x1f4dd; 主要技术&#xff1a;spring、 springmvc、 springboot、 mybatis 、 jquery 、 md5 、bootstarp.js tomcat、富文本编译器、拦截器等 主要功能:登录、注册、商品浏览、…

基于Java springboot+vue+redis前后端分离家具商城平台系统设计和实现

主要技术实现&#xff1a;spring、 springmvc、 springboot、 mybatis 、 jquery 、 md5 、bootstarp.js tomcat、富文本编译器、拦截器等 主要设计功能&#xff1a;用户登录、注册、商城分类、商品浏览、查看、购物车、订单、支付、以及后台的管理 4.3用户需求分析 用户…

jq 修改swal的标题_js-jquery-SweetAlert2【一】使用

一、下载安装地址&#xff1a;https://github.com/limonte/sweetalert2二、页面引用当然还有jquery三、示例3.1、基础结构window.οnlοadfunction(){swal("Here‘s a message!");//以下代码主要修改这里}3.2、精简用法1、标题【alert】-swal(string)swal("Here…

基于Java springmvc+mybatis酒店信息管理系统设计和实现

&#x1f345; 作者主页&#xff1a;Java李杨勇 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库【关注我&#xff0c;都给你】 &#x1f345;文末获取源码联系&#x1f345; 临近学期结束&#xff…

mysql 管理instance_对于多instance安装的MYSQL来说,起停的过程相对复杂,可以定义一些简单的脚本来简化日常的管理。1# 环境变量脚本[mysql@mysql01 scri...

对于多instance安装的MYSQL来说&#xff0c;起停的过程相对复杂&#xff0c;可以定义一些简单的脚本来简化日常的管理。1# 环境变量脚本[mysqlmysql01 scripts]$ cat mysql_env.ini#set envMYSQL_USERrootMYSQL_PASSpassword123 #明文保存的密码&#xff0c;生产库中当然不可以…

基于JAVA SSM springboot实现的抗疫物质信息管理系统设计和实现

&#x1f345; 作者主页&#xff1a;Java李杨勇 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库【关注我&#xff0c;都给你】 &#x1f345;文末获取源码联系&#x1f345; 临近学期结束&#xff…

mysql注册slave_创建slave库?spm=a2c4e.11155472的搜索结果-阿里云开发者社区

云原生必备知识&#xff1a; 应用储存所属技术领域&#xff1a;云原生| 名词定义 |由于容器本身是非持久化的&#xff0c;因此需要解决在容器中运行应用程序遇到的一些问题。首先&#xff0c;当容器崩溃时&#xff0c;kubelet将重新启动容器&#xff0c;但是写入容器的文件将会…

基于java springmvc+mybatis学生考试系统设计和实现

&#x1f345; 作者主页&#xff1a;Java李杨勇 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库【关注我&#xff0c;都给你】 &#x1f345;文末获取源码联系&#x1f345; 临近学期结束&#xff…

java文件编译为class文件需要键入什么命令_cmd命令行 编译Java 文件

【问题引入】 很多时候,需要用到命令行来进行Java文件的编译。在用习惯了IDE 可能会不清楚如何在cmd命令行窗口进行编译,简单的都还好,带有包路径的可能会让很多人觉得有点小头疼。最近试了一下,发现了问题,就研究整理了一下记录吧。 【注1】环境准备, JDK,classpath 都…

基于JAVA springboot+mybatis智慧生活分享平台设计和实现

&#x1f345; 作者主页&#xff1a;Java李杨勇 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、Java李杨勇公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我&#xff0c;都给你】 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f…

springboot自动装配的原理你能说出来吗?

SpringMvc和SpringBoot对比 首先我们回顾下原来搭建一个springmvc的hello-word的web项目&#xff08;xml配置的&#xff09;我们是不是要在pom中导入各种依赖&#xff0c;然后各个依赖有可能还会存在版本冲突需要各种排除。当你历尽千辛万苦的把依赖解决了&#xff0c;然后还需…

mysql sphinx 中文搜索_sphinx+mysql+mmseg 实现中文全站搜索 安装配置文档

一、Sphinx的特性高速的建立索引(在当代CPU上&#xff0c;峰值性能可达到10 MB/秒);高性能的搜索(在2 – 4GB 的文本数据上&#xff0c;平均每次检索响应时间小于0.1秒);可处理海量数据(目前已知可以处理超过100 GB的文本数据, 在单一CPU的系统上可处理100 M 文档);提供了优秀的…

基于javaweb宠物领养平台管理系统设计和实现

&#x1f345; 作者主页&#xff1a;Java李杨勇 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库【关注我&#xff0c;都给你】 &#x1f345;文末获取源码联系&#x1f345; 临近学期结束&#xff…