SpringBoot篇

目录

1、Spring Boot 自动配置原理?

@springbootConfiguration:

@CompontScan:

@EnableConfigutarion:

2、springboot常用注解

@RestController:

@RequestMapping("/path") :

@Autowired:

@PathVariable:

@ResponseBody:

@RequestBody(需要使用Post提交方式):

@Controller@Service@Compont:

@Transaction:

3、如何理解 Spring Boot 中的 Starter

4、什么是嵌入式服务器?为什么要使用嵌入式服务器?


1、Spring Boot 自动配置原理?

SpringBoot篇_第1张图片

SpringBoot篇_第2张图片

 

  • 在启动类下有一个@SpringBootApplication注解,
  • 它是一个组合注解,主要由@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan三个注解组成。

  • @SpringBootConfiguration:它说明这个文件是SpringBoot的配置类;
  • @ComponentScan:它扫描指定路径下的标识需要装配的类,并且自动装配到Spring的IOC容器当中;
  • @EnableAutoConfiguration:它是自动装配的核心,表示自动开启配置,

  • @EnableAutoConfiguration注解里面有一个import注解,它导入了AutoConfigurationImportSelector.class自动配置导入选择器,
  • 它实现了selectImports方法,在这个方法中调用了getCandidateConfigurations方法,
  • 通过spring提供的SpringFactoriesLoader机制扫描classpath META-INT/spring.factories文件下的一系列类名,将这些类自动加载到ioc容器中

启动类@SpringbootApplication注解下,有三个关键注解

@springbootConfiguration:

 

  • 表示启动类是一个自动配置类

@CompontScan:

 

  • 扫描启动类所在包外的组件到容器中

@EnableConfigutarion:

 

  • 它是最关键的一个注解,它拥有两个子注解,
  • 其中@AutoConfigurationpackageu会将启动类所在包下的所有组件到容器中,
  • @Import会导入一个自动配置文件选择器,
  • 它会去加载META_INF目录下的spring.factories文件,这个文件中存放很大自动配置类的全类名,这些类会根据元注解的装配条件生效,生效的类就会被实例化,加载到ioc容器中
     

 


2、springboot常用注解

@RestController:

 

  • 其实它就是修饰类的,这个控制器会返回Json数据 

@RequestMapping("/path") :

 

  • 这个也是修饰类的,它的意义是控制器的请求路径

@Autowired:

 

  • 它是修饰属性,按照类型进行依赖注入

@PathVariable:

 

  • 它是修饰参数,将路径值映射到参数上

@ResponseBody:

 

  • 它是修饰方法,该方法会返回Json数据

@RequestBody(需要使用Post提交方式):

 

  • 它是修饰参数,将Json数据封装到对应参数中

@Controller@Service@Compont:

 

  • 将类注册到ioc容器

@Transaction:

 

  • 开启事务


3、如何理解 Spring Boot 中的 Starter

  1. 在我们使用spring + springmvc,如果需要引入mybatis等框架,就需要到xml中定义mybatis需要的bean
  2. starter就是定义一个starter的jar包,写一个@Configuration配置类、将这些bean定义在里面,
  3. 然后在 starter包的META-INF/spring.factories中写入该配置类,
  4. springboot会按照约定来加载该配置类
  5. 开发人员只需要将相应的starter包依赖进应用,进行相应的属性配置(使用默认配置时,不需要配置),
  6. 就可以直接进行代码开发,使用对应的功能了,比如mybatis-spring-boot--starter,springboot-starter-redis


4、什么是嵌入式服务器?为什么要使用嵌入式服务器?

  • springboot已经内置了tomcat.jar,运行main方法时会去启动tomcat,并利用tomcat的spi机制加载 springmvc(这个就是嵌入式服务器)

  • 节省了下载安装tomcat,应用也不需要再打war包,然后放到webapp目录下再运行。只需要一个安装了 Java 的虚拟机,就可以直接在上面部署应用程序了(为什么要使用它!)

你可能感兴趣的:(面试题,spring,boot,spring,java)