spring系列面试题

spring framework IOC,AOP

springMVC

springboot

springcloud 浅析

  1. 什么是Spring Boot?

       Spring Boot 建立在 Spring 基础之上,遵循“约定优于配置”的原则,避免了创建项目或框架时必须做的繁杂配置,帮助开发者以最少的工作量,更加简单、方便地使用现有 Spring 中的所有功能组件。 

  1. 为什么要用SpringBoot:工程构建和维护方便简洁,例如可以快速构建工程;支持热启动,在代码修改时,项目检测到代码修改就会自动启动;简洁的安全策略集成,例如集成shiro,security;关系数据库和非关系数据库;运行期内嵌容器,如 Tomcat、Jetty,undertow;自动管理依赖;自带应用监控;诸如以上的诸多有点而选用springboot开发框架。
  2. Spring Boot有哪些优点?                                                                                                        遵循“约定优于配置”的原则,使用 Spring Boot 只需要很少的配置或使用默认的配置。
    使用 JavaConfig,避免使用 XML 的烦琐。
    提供 Starters(启动器),简化 Maven 配置,避免依赖冲突。
    提供内嵌 Servlet 容器,可选择内嵌 Tomcat、Jetty,undertow 等容器,不需要单独的 Web 服务器。这意味着不再需要启动 Tomcat 或其他任何中间件。
    提供了一系列项目中常见的非功能特性,如安全监控、应用监控、健康检测等。
    与云计算、微服务的天然集成。
  3. Springboot的核心注解是哪个?它主要由哪几个注解组成的? 启动流程;

  4. 运行Springboot有哪几种方式:启动类加上@SpringBootApplication 

    SpringApplication.run(EurekaMain7001.class, args);                                   
    方法一:SpringApplication.run(SpringbootApplication.class,args);                       方法二:本质是一样的,因为方法一的内部也是执行的方法的启动方法。
    
    SpringApplication springApplication = new SpringApplication(SpringbootApplication.class);
    springApplication.setBannerMode(Banner.Mode.OFF);
    springApplication.run(args);
  5. 如何理解Spring Boot 中的starters?
  6. 如何在Spring. Boot启动的时候运行一些特定的代码?
  7. @SpringBootApplication注解中的属性相当于哪几个注解?                                                       @SpringBootConfiguration:是来声明当前类是SpringBoot应用的配置类,项目中只能有一个                                                                                                   @EnableAutoConfiguration:启动器中帮我们添加了tomcat、SpringMVC的依赖 完成了web及SpringMVC的默认配置                                                                                                   @ComponentScan:声明这个注解的类所在的包开始,扫描包及子包

8、Springboot需要独立的容器运行吗?不需要,因为springboot内置了三种容器,分别是tomcat,jetty,undertow,默认的是使用tomcat启动,也可以指定容器启动,看了一些官方的测试,在性能上undertow在这三个中,是表现最好的。

9、Springboot中的监视器是什么? Spring boot actuator 用于监视应用程序性能和运行状况的工具和指标,包含内存使用情况等。

10、如何使用Spring Boot实现异常处理?

11、你如何理解Spring Boot 中的Starters

12、springboot常用的starter有哪些

13、Spr ingBoot实现热部署有哪几种方式

14、如何理解Spring Boot配置加载顺序

15、Spring Boot的核心配置文件有哪几个?它们的区别是什么?

16、如何集成Springboot和ActiveMQ

17、什么是JavaConfig?

18、如何重新加载Springboot上的更改,而无需重新启动服务器

19、Springboot中的监视器是什么?

20、如何在Springboot中禁用Actuator端点安全性?

21、如何在自定义端口上运行Spring Boot应用程序?

22、什么是YAML?

23、如何实现Spring Boot应用程序的安全性?

24、如何集成Spring Boot和Acti veMQ?

25、如何使用Spring Boot实现分页和排序?

26、什么是Swagger? 你用Spring Boot实现了它吗?

27、什么是Spring Profiles?

28、什么是Spring Batch?

29、什么是Freelarker模板?

30、如何使用Spring Boot 实现异常处理?

31、您使用了哪些starter maven依赖项?

32、什么是CSRF攻击?“跨站请求伪造

33、什么是"ebSockets?

34、什么是AOP?

35、什么是Apache Kafka?

36、我们如何监视所有Spring Boot微服务?

37、Spring Boot的配置文件有哪几种格式?它们有什么区别?

       三种方式:yml;properties这两个是一样的,区别在于书写格式不一样,另外可以定义一个配置类,用于配置。.yml 格式不支持 @PropertySource 注解导入配置

38、开启Spring Boot特性有哪几种方式?

  • 1)继承spring-boot-starter-parent项目
  • 2)导入spring-boot-dependencies项目依赖

39、Spring Boot的目录结构是怎样的?

40、运行Spring Boot有哪几种方式?

41、Spring Boot自动配置原理是什么?

42、如何在Spring. Boot启动的时候运行一些特定的代码?

       第三种:注解式,创建方法,添加注解:@PostConstruct 

         @Component public class InitStart implements CommandLineRunner {

        @PostConstruct public void init(){ //此处为项目启动后执行的方法 }

       }

创建类,并实现ApplicationRunner接口,重写run方法;

@Component
public class InitStart implements ApplicationRunner {

   @Override
    public void run(ApplicationArguments args) throws Exception {
        //此处为项目启动后执行的方法
    }
    
}

43、Spring Boot有哪几种读取配置的方式?

      通过@Value注解读取配置信息(推荐使用)
      通过@ConfigurationProperties注解读取配置信息
      通过@PropertySource+@Value注解读取配置信息
     通过@PropertySource+@ConfigurationProperties注解读取配置信息

44、Spring Boot支持哪些日志框架?推荐和默认的日志框架是哪个?

        Java Util Logging,Log4j2, Logback 作为日志框架,

        如果使用 Starters启动器,Spring Boot 将使用 Logback 作为默认日志框架,推荐的日志框架 是Log4j2

45、Spring Boot如何定义多套不同环境配置?

  Spring Boot中采用Profile对不同的环境进行切换
   如:application.yml中采用以下定义
  spring:
    profiles: 
      active: prod //指定运行环境

46、Spring Boot可以兼容老Spring项目吗,如何做?

47、保护Spring Boot应用有哪些方法?

48、Spring Boot 2. X有什么新特性?与1.X有什么区别?

     1. Spring Boot 2.0 要求Java版本必须8以上,不再支持6和7

     2. Spring Boot 2 支持Quartz调度器,可以加入spring-boot-starter-quartz来启用。支持基于内存和基于jdbc两种存储。

    3. 单元测试不同

    4. Spring Boot 2 需要 Spring5,需要ES5.5以上

    5. 支持Spring WebFlux(响应式编程)。WebFlux需要底层提供运行时支持,比如Servlet3.1 或者Netty

    6. Spring Boot 2 支持Thymeleaf3

49、如何重新加载Spring Boot上的更改,而无需重新启动服务器?

50、springboot集成mybati s的过程

51、Spring Boot、Spring MVC和Spring有什么区别?

52、什么是SpringBootStater?

53、Spring Boot还提供了其它的哪些Starter Project Opti ons?

54、Spring是如何快速创建产品就绪应用程序的?

55、创建一个Spring Boot Project的最简单的方法是什么?

56、Spring Initializr是创建spring Boot Projects 的唯一-方法吗?

57、如何使用SpringBoot 自动重装我的应用程序?

58、什么是嵌入式服务器?我们为什么要使用嵌入式服务器呢?

59、如何在Spring Boot中添加通用的JS代码?

60、什么是Spring Date?

61、什么是Spring Data REST?

62、path=” userscollectionResourceRe1=”users"如何与spring Data Rest一起使用?

63、当Spring Boot应用程序作为Java应用程序运行时,后台会发生什么?

64、我们能否在spring-boot-starter-web中用jetty 代替tomeat?

65、如何使用Spring Boot生成一个WAR文件?

66、如何使用Spring Boot 部署到不同的服务器?

67、RequestMapping和GetMapping的不同之处在哪里?

68、为什么我们不建议在实际的应用程序中使用Spring Data Rest?

69、在Spring Initializer中,如何改变一个项目的包名字?

70、可以配置applicati on. propertierde的完整的属性列表在哪里可以找到?

71、JPA和Hibernate有哪些区别?

72、使用Spring Boot 启动连接到内存数据库,H2的JPA应用程序需要哪些依赖项?

73、如何不通过任何配置来选择Hibernate作为JPA的默认实现?

74、指定的数据库连接信息在哪里?它是如何知道自动连接至H2的?

75、我们如何连接一个像MSSQL或者orcale一样的外部数据库?

76、Spring Boot配置的默认H2数据库的名字是上面?为什么默认的数据库名字是testdb?

77、如果H2 不在类路径里面,会出现上面情况?

78、你能否举一个以Resd0nly 为事务管理的例子?

79、发布Spring Boot 用户应用程序自定义配置的最好方法是什么?

80、配置文件的需求是什么?

81、如何使用配置文件通过Spring Boot配置特定环境的配置?

82、我们]如何使用Maven设置Spring Boot应用程序?

83、如何禁用特定的自动配置?

84、Spring boot支持哪些外部配置?

85、如何对Spring Boot应用进行测试?

86、Spring Boot Actuator有什么用?

87、SpringBoot中静态首页默认位置可以放在哪里?

89、SpringBoot中静态资源直接映射的优先级是怎样的?

90、继承WebMveC onfi gur erAdapter抽象类,常用的重写方法列举几个?

91、@SpringBootApplication引入了哪3个重要的注解?

92、Spring事务的隔离级别与传播行为:

@Transactional(isolation = Isolation.DEFAULT,propagation = Propagation.REQUIRES_NEW)

ISOLATION_DEFAULT:用底层数据库的设置隔离级别,数据库设置的是什么我就用什么;
ISOLATION_ READUNCOMMITTED:未提交读,最低隔离级别、事务未提交前,就可被其他事务读取(会出现幻读、脏读、不可重复读);
ISOLATION_READCOMMITTED:提交读,一个事务提交后才能被其他事务读取到(会造成幻读、不可重复读),SQL server 的默认级别;
ISOLATION_REPEATABLEREAD:可重复读,保证多次读取同一个数据时,其值都和事务开始时候的内容是一致,禁止读取到别的事务未提交的数据(会造成幻读),MySQL 的默认级别;
ISOLATION_ SERIALIZABLE:序列化,代价最高最可靠的隔离级别,不允许读写并发操作,写执行时,读必须等待,该隔离级别能防止脏读、不可重复读、幻读。

事务的传播行为可以由传播属性指定。Spring定义了7种传播行为:

1.Propagation.REQUIRED

方法被调用时自动开启事务,在事务范围内使用则使用同一个事务,否则开启新事务。       

2.Propagation.REQUIRES_NEW

无论何时自身都会开启事务

3.Propagation.SUPPORTS

自身不会开启事务,在事务范围内则使用相同事务,否则不使用事务

4.Propagation.NOT_SUPPORTED

自身不会开启事务,在事务范围内使用挂起事务,运行完毕恢复事务

5.Propagation.MANDATORY

自身不开启事务,必须在事务环境使用否则报错

6.Propagation.NEVER

自身不会开启事务,在事务范围使用抛出异常

7.Propagation.NESTED

如果一个活动的事务存在,则运行在一个嵌套的事务中. 如果没有活动事务, 则按TransactionDefinition.PROPAGATION_REQUIRED 属性执行。需要JDBC3.0以上支持
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值