SpringBoot相较于SSM的优点?
-
部署方便:Spring Boot 内嵌了servlet 容器,比如Tomcat、Jetty ,不再需要打成war 包部署到tomcat的webapp目录下。只需要打成 jar 包就能在安装了 jdk 的电脑上独立运行。
-
配置方便:SSM不仅要实现业务需求,还要自己在xml中配置SpringMVC、Spring、Mybatis信息。而Spring Boot不需要,可以专心于业务代码。
-
应用监控:SpringBoot 提供了基于http、ssh、telnet 的项目监控。
SpringBoot 是否可以使用 XML 配置 ?
Spring Boot 推荐使用注解配置而非 XML 配置,但是 Spring Boot 中也可以使用 XML 配置,通过 @ImportResource 注解可以引入一个 XML 配置。
也正是用这个方法,来兼容一些老的spring项目。
SpringBoot核心配置文件是什么?
bootstrap.properties和application.properties
-
application (.yml或者.properties):用于 SpringBoot项目的自动化配置。
-
bootstrap(.yml 或者 .properties):比applicaton优先加载,且boostrap里面的属性不能被覆盖。一般来说我们在 SpringCloud Config 或者Nacos中会用到它。
SpringBoot 打成的 jar 包和普通的 jar 包有什么区别
-
普通的jar包可以被其他项目所依赖,解压后直接就是包名,包里就是我们的代码。
-
Spring Boot 中默认打包成的 jar 叫
可执行 jar包,可以通过命令java -jar xxx.jar来运行,但不能被其他项目所依赖,不能直接使用其中的类。这种jar包解压后要在\BOOT-INF\classes目录下找到我们的代码。如果非要引用,可以在打包的时候到 pom.xml 文件中增加配置,将 Spring Boot 项目打包成两个 jar ,一个可执行,一个可引用。
Springboot的CORS跨域问题是怎么引起的呢?怎样解决?
之所以会跨域,是因为受到了同源策略的限制,同源策略要求源相同才能正常进行通信,即协议、域名、端口号都完全一致。
解决方法:
方法一:直接采用@CrossOrigin注解
用@CrossOrigin注解修饰整个Controller类。SpringMVC也是同样的,但要求在Spring4.2及以上的版本。
方法二:增加处理跨域请求的Configuration
增加一个配置类,CrossOriginConfig.java。继承WebMvcConfigurerAdapter或者实现WebMvcConfigurer接口,其他都不用管,项目启动时,会自动读取配置。
@Configuration
public class CorsConfig extends WebMvcConfigurerAdapter {
static final String ORIGINS[] = new String[] { "GET", "POST", "PUT", "DELETE" };
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**").allowedOrigins("*").allowCredentials(true).allowedMethods(ORIGINS).maxAge(3600);
}
说说你在使用SpringBoot时比较有印象的有哪些注解
1、@SpringBootApplication
这个注解是SpringBoot最核心的注解,用在 SpringBoot的主类上,标识这是一个 SpringBoot 应用,用来开启 SpringBoot 的各项能力。
实际上这个注解是@Configuration,@EnableAutoConfiguration,@ComponentScan三个注解的组合。
2、@Configuration
指出该类是 Bean 配置的信息源,相当于XML中的,一般加在主类上。
3、@EnableAutoConfiguration
允许 Spring Boot 自动配置注解,开启这个注解之后,Spring Boot 就能根据当前类路径下的包或者类来配置 Spring Bean。
4、@ComponentScan
组件扫描。相当于,如果扫描到有@Component @Controller @Service等这些注解的类,则把这些类注册为bean。
5、@Component
泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
6、@Controller
用于标注控制层组件。
7、@Service
用于标注业务层组件。
8、@Data
用于标注数据访问组件,即DAO组件。
9、@AutoWired
它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。
与自动装配相对应的是组件扫描,通过定义资源的方式,让Spring IOC容器扫描资源所在的包,从而装配Bean。
10、@ResponseBody
作用在controller层方法上,表示该方法直接返回json数据给客户端。也可以直接用于类上,写在@Controller 上面一行,表示该类中的所有Controller方法均使用该注解。
11、@RestController
相当于上面 @Controller + @ResponseBody 合在一起的作用。
12、@RequestMapping
建立请求URL和处理方法之间的映射关系,可以写在方法和类上。用于类上时,表示类中的所有响应请求的方法都是以该地址作为路径前缀。
13、@RequestBody 与 @RequestParam
作用在controller方法的参数列表里
- 如果请求类型是 POST 并且请求头的 Content-Type 字段为
application/json,@RequestBody 就会将前端传来的 json 数据转换为自己定义好的 javabean 对象。 - 如果请求类型是 GET ,就不能使用 @RequestBody,只能用 @RequestParam 来一对一接收。
- 字段如果是默认值或者是Form表单提交的,也只能用@RequestParam来接收。
Spring Boot 配置加载顺序
(1)properties文件;(2)YAML文件;(3)系统环境变量;(4)命令行参数;
YAML 配置的优势在哪里 ?
- 配置有序,在一些特殊的场景下,配置有序很关键
- 支持数组,数组中的元素可以是基本数据类型也可以是对象
- 简洁
SpringBoot 中如何实现定时任务?
- 使用 Spring 中的 @Scheduled 注解
- 使用第三方框架 Quartz,定义Job和Trigger