【java总结】框架之SpringBoot
【java总结】框架之SpringBoot
SpringBoot基础
什么是 Spring Boot?
传统的 SSM/SSH 框架组合配置繁琐臃肿,不同项⽬有很多重复、模板化的配置,严重降低了 Java ⼯程师的开发效率,⽽ Spring Boot 可以轻松创建基于 Spring 的、可以独⽴运⾏的、⽣产级的应⽤程序。通过对 Spring 家族和⼀些第三⽅库提供⼀系列⾃动化配置的Starter,来使得开发快速搭建⼀个基于 Spring 的应⽤程序。
Spring Boot 让⽇益臃肿的 Java 代码⼜重回简洁。在配合 Spring Cloud 使⽤时,还可以发挥更⼤的威⼒。
Spring Boot有哪些优点?
spring boot 核⼼配置⽂件是什么?
spring boot 配置⽂件有两种类型,它们主要的区别是书法风格不同。
什么是 JavaConfig?
Spring JavaConfig 是 Spring 社区的产品,它提供了配置 Spring IoC 容器的纯 Java ⽅法。因此 它有助于避免使⽤ XML 配置。使⽤JavaConfig 的优点在于:
spring boot 有哪些⽅式可以实现热部署?
Spring Boot 实现热部署其实很容易,引⼊ devtools 依赖即可,这样当编译⽂件发⽣变化时,Spring Boot 就会⾃动重启。在 Eclipse 中,⽤户按下保存按键,就会⾃动编译进⽽重启 Spring Boot,IDEA 中由于是⾃动保存的,⾃动保存时并未编译,所以需要开发者按下Ctrl+F9 进⾏编译,编译完成后,项⽬就⾃动重启了。
如果仅仅只是页⾯模板发⽣变化,Java 类并未发⽣变化,此时可以不⽤重启 Spring Boot,使⽤ LiveReload 插件就可以轻松实现热部署。
什么是Spring Profiles?
Spring Profiles允许⽤户根据配置⽂件(dev,test,prod等)来注册bean。因此,当应⽤程序在开发中运
⾏时,
只有某些bean可以加载,⽽在PRODUCTION中,某些其他bean可以加载。假设我们的要求是Swagger⽂档仅适⽤于QA环境,
并且禁⽤所有其他⽂档。这可以使⽤配置⽂件来完成。Spring Boot使得使⽤配置⽂件⾮常简单。
什么是Spring Batch?
Spring Boot Batch提供可重⽤的函数,这些函数在处理⼤量记录时⾮常重要,包括⽇志/跟踪,事务管理,作业处理统计信息,
作业重新启动,跳过和资源管理。它还提供了更先进的技术服务和功能,通过优化和分区技术,可以实现极⾼批量和⾼性能批处理作业。简单以及复杂的⼤批量批处理作业可以⾼度可扩展的⽅式利⽤框架处理重要⼤量的信息。
Spring Boot 中如何实现定时任务?
定时任务也是⼀个常见的需求,Spring Boot 中对于定时任务的⽀持主要还是来⾃ Spring 框架。
在 Spring Boot 中使⽤定时任务主要有两种不同的⽅式,⼀个就是使⽤ Spring 中的 @Scheduled 注解,另⼀个则是使⽤第三⽅框架Quartz。
使⽤ Spring 中的 @Scheduled 的⽅式主要通过 @Scheduled 注解来实现。
使⽤ Quartz ,则按照 Quartz 的⽅式,定义 Job 和 Trigger 即可。
什么是 Spring Data ?
Spring Data 是 Spring 的⼀个⼦项⽬。⽤于简化数据库访问,⽀持NoSQL 和 关系数据存储。其主要⽬标是使数据库的访问变得⽅便快捷。Spring Data 具有如下特点:
1. SpringData 项⽬⽀持 NoSQL 存储:
2. MongoDB (⽂档数据库)
3. Neo4j(图形数据库)
4. Redis(键/值存储)
5. Hbase(列族数据库)
SpringData 项⽬所⽀持的关系数据存储技术:
1. JDBC
2. JPA
Spring Data Jpa 致⼒于减少数据访问层 (DAO) 的开发量. 开发者唯⼀要做的,就是声明持久层的接⼝,其他都交给 Spring Data JPA 来帮你完成!Spring Data JPA 通过规范⽅法的名字,根据符合规范的名字来确定⽅法需要实现什么样的逻辑。
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)spring ioc注解
@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注解即可!
基础配置
三种创建⽅式
其实 Spring Boot ⼯程本质上就是⼀个 Maven ⼯程在线创建
可以使⽤ IDE 来创建,在创建项⽬时选择 Spring Initializr
Maven 创建

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。