2018-07-13
Spring boot基础
[TOC]
1.Starter
1-1.概念
Spring boot的依赖项,所有spring boot整合的依赖都有此约定
- 核心依赖org.springframework.boot中的整合都以 spring-boot-starter-xxx的形式引入
- 第三方的依赖可能是以xxx-spring-boot-starter的形式引入
如spring-boot-starter 核心启动器,整合自动配置的支持以及日志记录和YAML
Spring-boot-starter-aop 支持spring 面向切面编程
……更多参考官网列表
https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#using-boot-starter
1-2.spring boot根据starter生成主观配置
Spring boot会根据配置的starter生成自己的主观配置,如导入spring-boot-starter-web时生成的观点
- 使用Tomcat作为嵌入web服务容器
- 使用Hibernation 对象关系映射(ORM)
- 使用Apache Jackson绑定Json
- 使用Spring MVC作为Rest风格框架
Spring boot会生成目前主流的web默认配置(¯(ツ)/¯),如果需要替换,可以自定义,方法下方传送门
2.可执行jar
可以通过maven插件配置打包,在本地命令窗口即可启动项目(简单实用的功能,省略)
精选传送门,附带整合Rest风格的Demo
https://www.ibm.com/developerworks/cn/java/j-spring-boot-basics-perry/index.html
3.Spring快速搭建
3-1.Demo01入门
该博客有一套基础的Spring boot搭建文章
https://www.cnblogs.com/ityouknow/p/5662753.html
4.常用注解整合
4-1.Controller层常用注解
@Controller
Spring中,表现层的控制器标识(servlet)
@RestController
在rest风格中常用的控制器标识,是组合注解,包括
- @ResponseBody
- @Controller
- @Retention(value=RUNTIME)
- @Documented
SpringMVC中,该类的所有handler都会以字符串渲染的形式返回给调用者
@RequestMapping
扩展处理器映射器,被标注的方法即handler,可以标注对象,这也是springMVC的特点之一
属性:
- value 地址/变量/正则表达式
- method 方法格式,如 RequestMethod.GET
- consumes 如 consumes=”application/json” 处理Content-Type的类型为指定类型的请求
- produces 如 produces=”application/json” 处理请求的Accept为指定类型的请求,并返回相同的内容类型
- params 如 params = “username=DonY15” 处理带有username参数,且值为DonY15的指定请求
- headers 如 headers=”Referer=http://www.ifeng.com/“ 处理header中带有Referer且值为http://www.ifeng.com/的请求
不同属性的映射注解
- @PathVariable 如 @PathVariable String username 接收地址栏中变量/正则的注解
- @RequestParams 接收约定传递的参数
@ResponseBody
普通MVC中常用来返回json格式给前端,建议和json类型转换器搭配使用
@RequestBody
很少使用,限制请求参数来自请求体中
4-2.配置注解
@SpringBootApplication
启动类注解,组合注解,内部封装了三种注解,都需要时可以使用该注解来简化代码
- @ComponentScan 扫描需要的组件
- @Configuration 配置类
- @EnableAutoConfiguration 开启自动配置
@Component
与Configuration类似,一般当组件配置不好分类时使用
@Autowired/@Resource
自动装配/指定注入
@Inject
等价于默认的@Autowired,只是没有required属性
@ImportResource
用来加载xml配置文件。
如Spring-xxx.xml可以注入
(技巧,可以先将多个Spring-xxx.xml通过@Import注入到一个Spring-root.xml中,再将Spring-root.xml注入到代码)
@Service
一般用于修饰service层的组件(不同框架有不同的作用,如Dubbo)
@Repository
使用@Repository注解可以确保DAO或者repositories提供异常转译,这个注解修饰的DAO或者repositories类会被ComponetScan发现并配置,同时也不需要为它们提供XML配置项。
@Bean
用@Bean标注方法等价于XML中配置的bean。
@Value
注入Spring boot application.properties配置的属性的值。
—————「待深入注解」—————
@JsonBackReference
解决嵌套外链问题
@RepositoryRestResourcepublic
配合spring-boot-starter-data-rest使用。
@Import
用来导入其他配置类
@Qualifier
当有多个同一类型的Bean时,可以用@Qualifier(“name”)来指定。与@Autowired配合使用。@Qualifier限定描述符除了能根据名字进行注入,但能进行更细粒度的控制如何选择候选者
4-3.全局异常注解
@ControllerAdvice
包含@Component。可以被扫描到。统一处理异常。
@ExceptionHandler(Exception.class)
用在方法上面表示遇到这个异常就执行以下方法。
4-4.事务管理
@EnableTransactionManagement
开始事务支持
@Transactional
Service中指定方法开启事物
多事务管理器传送门
https://blog.csdn.net/catoop/article/details/50595702
事务简单配置传送门
https://blog.csdn.net/rickiyeat/article/details/62042685
4-5.整合Mybatis
mybatis-spring-boot-starter
@MapperScan
扫描Mapper包
整合Mybatis传送门
http://www.ityouknow.com/springboot/2016/11/06/spring-boo-mybatis.html
4-6.JPA注解
@Entity
实体类注解
@Table
实体类和数据库表映射,如果两者名字相同可以省略
@Column
实体类属性和字段映射,如果两者名字相同可省略
@Id
主键映射
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator = “repair_seq”)
表示主键生成策略是sequence(可以为Auto、IDENTITY、native等,Auto表示可在多个数据库间切换),指定sequence的名字是repair_seq。
@JsonIgnore
作用是json序列化时将Java bean中的一些属性忽略掉,序列化和反序列化都受影响。
@JoinColumn(name=”loginId”)
一对一:本表中指向另一个表的外键。
一对多:另一个表指向本表的外键。
@OneToOne
@OneToMany
@ManyToOne
对应hibernate配置文件中的一对一,一对多,多对一。
—————「待深入注解」—————
@Transient:表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性。如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient,否则,ORM框架默认其注解为@Basic。@Basic(fetch=FetchType.LAZY):标记可以指定实体属性的加载方式
5.Thymeleaf 丁香叶
SpringBoot官方不支持使用JSP,官方推荐 Thymeleaf 引擎代替JSP
Thymeleaf支持动静结合
5-1. 语法 th: 前缀
1 | <p th:text="${text}">我是普通文本</p> |
Thymeleaf基础手册
https://blog.csdn.net/zrk1000/article/details/72667478/
后台可以使用Model
5-2.优秀传送门
https://www.bysocket.com/?p=1973