SpringBoot阶段总结
介绍
SpringBoot是什么?
SpringBoot是一套快速配置开发的脚手架,能够快速开发单个微服务。其本质上就是一个maven工程
-
SpringBoot就是一个整合了很多优秀的框架的Spring封装,是一个启动Spring项目的启动工具。
优点是不用再去写一大堆xml配置,而是采用习惯优于配置的配置方式,使用properties
或yml
文件类型进行配置。 -
为什么要使用SpringBoot?
- 配置简单
- 独立运行
- 自动装配
- 无代码生成和 xml 配置
- 提供应用监控
- 易上手
- 提升开发效率
- 内嵌服务器、安全管理、运行数据监控、运行状况检查和外部化配置等
应用
-
怎么实现习惯优于配置?//SpringBoot是怎么启动的
SpringBoot入口类上面有一个核心注解
@SpringBootApplication
,这个注解里面又包含@Configuration
(标注配置类),@ComponentScan
(扫包并注册成Bean),@EnableAutoConfiguration
(自动根据上下文来配置Bean) -
SpringBoot核心配置文件是什么?
springboot配置文件有两种类型,它们主要的区别是书法风格不同。
bootstrap
(.yml 或者 .properties):bootstrap 由父ApplicationContext 加载的,比 applicaton 优先加载,且boostrap里面的属性不能被覆盖;application
(.yml 或者 .properties):用于springboot项目的自动化配置。
application.yml
和bootstrap.yml
区别?
SpringCloud入门之常用的配置文件 application.yml和 bootstrap.yml区别
-
SpringBoot中如何实现定时任务?
定时任务也是一个常见的需求,SpringBoot中对于定时任务的支持主要还是来自Spring框架。
在SpringBoot中使用定时任务主要有两种不同的方式,一个就是使用 Spring 中的
@Scheduled
注解,另一个则是使用第三方框架Quartz
。使用 Spring 中的 @Scheduled 的方式主要通过 @Scheduled 注解来实现。
使用 Quartz ,则按照 Quartz 的方式,定义 Job 和 Trigger 即可。
-
🌟 SpringBoot的常用注解有哪些?
@SpringBootApplication //Sprnig Boot项目的核心注解,目的是开启自动配置,也是下面三个的总和 @EnableAutoConfiguration //启用 SpringBoot 的自动配置机制 @Configuration //表示这是一个配置类,类似xml的配置文件 @ComponentScan //表示配置包扫描,里面的属性和xml的属性一一对应 @Autowired //自动根据类型注入 @Qualifier(“名称”) //指定自动注入的id名称 @Resource(“名称”) //和autowired类似,这个注解属于J2EE的 @PostConstruct //被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行 @PreDestroy //被@PreDestroy修饰的方法会在服务器卸载Servlet的时候运行 @Component //所有要让spring管理的bean都要标注这个注解,一般标注在pojo类 //但是在web开发中,又衍生出了三个类,他们功能一样 @Repository(“名称”) //dao层 @Service(“名称”) //service层 @Controller(“名称”) //web层 @Scope //声明 Spring Bean 的作用域 //-------singleton : 唯一 bean 实例,Spring 中的 bean 默认都是单例的。 //-------prototype : 每次请求都会创建一个新的 bean 实例。 //-------request : 每一次 HTTP 请求都会产生一个新的 bean,该 bean 仅在当前 HTTP request 内有效。 //-------session : 每一次 HTTP 请求都会产生一个新的 bean,该 bean 仅在当前 HTTP session 内有效。 @Configuration //一般用来声明配置类,可以使用 @Component注解替代,不过使用Configuration注解声明配置类更加语义化。 @PropertySource("classpath:user.properties") //在pojo类中引入配置文件 @ConfigurationProperties(prefix = "user") //在顶部注解后可以自动引入 @Value("${user.id}")//手动引入 @ControllerAdvice //全局异常处理,全局数据绑定,全局数据预处理 @ExceptionHandler() //全局异常处理,符合就近原则 @ExceptionHandler(NumberFormatException.class) //或者指定异常 //------------web注解---------------- @RestController //@Controller和 @ResponseBody 的合集,REST风格的控制器 @ResponseBody //将java对象转为json格式的数据。 @GetMapping("users") //等价于 @RequestMapping(value="/users",method=RequestMethod.GET) @PostMapping("users") //等价于@RequestMapping(value="/users",method=RequestMethod.POST) @PutMapping("/users/{userId}") //等价于@RequestMapping(value="/users/{userId}",method=RequestMethod.PUT) @DeleteMapping("/users/{userId}") //等价于@RequestMapping(value="/users/{userId}",method=RequestMethod.DELETE) @PatchMapping("/profile") //一般实际项目中,我们都是 PUT 不够用了之后才用 PATCH 请求去更新数据。 //----------前后端传值--------------- @PathVariable //用于获取路径参数 @RequestParam //用于获取查询参数。 @RequestBody //用于读取 Request 请求(可能是 POST,PUT,DELETE,GET 请求)的 body 部分并且Content-Type 为 application/json 格式的数据 @Valid //用于验证接收参数是否符合pojo定义的要求 //参数校验 JSR 注解见另一篇文章RESTful @Entity //声明一个类对应一个数据库实体。 @Table //设置表名 @Id //声明主键 @GeneratedValue //指定主键生成策略。 @Column(name = "user_name", nullable = false, length=32) //声明字段。 @Column(columnDefinition = "tinyint(1) default 1") //设置字段类型并且加默认值 @Transient //指定不持久化特定字段 @Transactional //在要开启事务的方法上使用@Transactional注解即可!
-
SpringBoot和SpringMVC有什么不同?
-
springMvc属于一个企业WEB开发的MVC框架,涵盖面包括前端视图开发、文件配置、后台接口逻辑开发等,XML、config等配置相对比较繁琐复杂;
-
springBoot框架相对于springMvc框架来说,更专注于开发微服务后台接口,不开发前端视图,同时遵循默认优于配置,简化了插件配置流程,不需要配置xml,相对springmvc,大大简化了配置流程。
-
-
springBoot和springCloud有什么不同?
-
spring boot使用了默认大于配置的理念,集成了快速开发的spring多个插件,同时自动过滤不需要配置的多余的插件,简化了项目的开发配置流程,一定程度上取消xml配置,是一套快速配置开发的脚手架,能快速开发单个微服务;
-
spring cloud大部分的功能插件都是基于springBoot去实现的,springCloud关注于全局的微服务整合和管理,将多个springBoot单体微服务进行整合以及管理; springCloud依赖于springBoot开发,而springBoot可以独立开发;
-
SpringBoot就是一个整合了很多优秀框架的Spring封装