一、常用dependency
1.热部署:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
2.Maven
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
3.Themleaf
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
4.Web
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
5.Lombok
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
6.单元测试
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
7.JDBC驱动
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
8.校验器
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
9.Hutool(不常用)
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.4.5</version>
</dependency>
二、常用注解及其含义和用法
1.@Data
(1)作用
导入getter()方法和setter()方法
2.@AllArgsConstructor
(1)作用
导入全参构造方法
3.@NoArgsConstructor
(1)作用
导入无参构造方法
4.@Resource
(1)作用
@Resource和@Autowired注解都是用来实现依赖注入的。只是@AutoWried按by type自动注入,而@Resource默认按byName自动注入。
(2)属性
@Resource有两个重要属性,分别是name和type。spring将name属性解析为bean的名字,而type属性则被解析为bean的类型。所以如果使用name属性,则使用byName的自动注入策略,如果使用type属性则使用byType的自动注入策略。如果都没有指定,则通过反射机制使用byName自动注入策略。
5.@ResponseBody
(1)作用
@ResponseBody的作用是将java对象转为json格式的数据。后台给前台传一个对象的话,没有@ResponseBody,接受的则是一个Object对象。
6.@ModelAttribute
(1)作用
被@ModelAttribute注释的方法会在此controller每个方法执行前被执行,因此对于一个controller映射多个URL的用法来说,要谨慎使用。
7.@SpringBootApplication
(1)作用
启动项注解
8.@Configuration
(1)作用
@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器。
9.@GetMapping
(1)作用
@GetMapping是Spring4.3提供的新注解,它是一个组合注解,等价于@RequestMapping(method = RequestMethod.Get ),用于简化开发。
10.@Mapper
(1)作用
用于Mapper层。目的就是为了不再写mapper映射文件。(很香的一个标签)。
11.@Service
(1)作用
标记当前类是一个service类,加上该注解会将当前类自动注入到spring容器中,不需要再在applicationContext.xml文件定义bean了。
12.@Controller
(1)作用
控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示。
@Repository
(1)作用
作用于Dao层的实现类(Impl),将Dao层自动装配到IOC容器中。
三、IOC与AOP(这一块总结的可能不是很好,有高人看不过去的话,希望并感谢指导)
1.IOC
(1)IOC的含义
IOC: Inverse of Control,控制反转,将对象的创建权反转给Spring。Spring就是一个大工厂,可以将所有对象创建和依赖关系维护,交给Spring管理。
(2)IOC的注入方法
a.接口注入
b.setter方法注入
配置bean.xml文件进行装配。
<bean name="stu" class="com.cnblogs.bean.Student">
<property name="sNo" value="1001"></property>
<property name="name" value="jack"></property>
<property name="age" value="12"></property>
<property name="sex" value="male"></property>
<property name="grade" value="三年级"></property>
</bean>
< bean >标签中,name和id起标识这个对象的作用,id会帮我们检查给对象起的名字是否规范(名字不能重复,不能有空格,不能以数字开头)。
class属性是一个类的全限定名,标识配置那个类。
c.构造方法注入
d.注解注入
@Service:在xxxServiceImpl中添加(Service层的实现类)
@Repository:在xxxDaoImpl中添加(Dao层的实现类)
@Mapper:在xxxMapper中添加(Mapper层的实现类)
@Controller:在xxxController中添加(Controller层)
@AutoWired:自动按照类型注入
2.AOP
(1)AOP的原理
AOP(Aspect-OrientedProgramming,面向方面编程)。
(2)AOP的应用
参考博客:某位大佬
四、MVC
1.MVC的工作原理
M:Model(完成业务逻辑 Service层、Mapper层(dao层)、pojo层(entity层))
V:View(完成视图渲染)
C:Controller(控制器,连接前后端)
应用程序的入口类应放在上述包之上的包中,主类使用注解@SpringBootApplication
2.使用Controller
(1)主要注解的使用
@Controller 作用于Controller类。表明Controller类可以识别Http请求。
@RequestMapping 作用于类或方法。用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。用于方法上,表示方法中所有的响应请求的方法都是以该地址作为路径。
(2)处理URL请求方法的入口参数 Model
(3)处理URL请求方法的返回类型
1.返回类型是String,默认表示视图名称。如果要返回内容,则在该URL请求处理方法上使用注解@ResponseBody说明。
3.@RequestMapping
作用:在URL和代码之间建立映射关系
属性:
value :表示URL(指定请求的实际地址)
method:表示请求的方法 GET、POST
Consumes, 表示方法仅处理request Content-Type为"application/json" 类型的请求,例如application/josn,text/html)
Produces :指定返回的内容类型,对应HTTP协议的Accept(仅当request请求头中的(Accept)类型中包含该指定类型才返回)
params :必须包含某些参数值时,才让该方法处理
headers :指定request中必须包含某些指定的header值,才能让该方法处理请求。
4.方法参数
(1)@PathVariable
从URL中提取参数。在使用的同时,URL中要添加/{参数名称}
(2)MultipartFile文件上传
@ModelAttribute 把使用该注解的变量作为Model的一个属性,作用于Controll的方法上,在URL被映射到该类时该方法首先被执行。
- getOriginalFilename: 上传的文件名
- getBytes 上传的内容
- isEmpty 文件上传内容为空或没有上传
- getSize 文件大小
- transferTo(File dest) 保存文件到指定路径
在使用文件上传时,前端form表单需要添加enctype属性。enctype="multipart/form-data"
(3)Model
- addAttribute(String attrName, Object attrValue)向前端传递数据。
- addAllAttributes(Map attrs) 覆盖
- mergeAttributes(Map attrs) 合并,如果有则忽略
- containsAttribute(String attrName)判断变量是否存在
(4)ModelAndView
与Model相比,多提供了视图信息
(5)@RequestParam注解限定HTTP参数
- value:参数名称
- required:boolean类型,是否必须有。若没有抛400 错误
- defaultValue: 若没有时的默认值
5.数据校验
(1)空检查
- @Null 验证对象是否为空
- @NotNull 验证对象不为空
- @NotBlank 验证字符串不为空和不是空字符串
- @NotEmpty 验证对象不为null, 或者集合不为空
(2)长度检查
- @Size(min=,max=)
- @Length 字符串长度
(3)数值检查
- @Min 验证是否大于等于某个数
- @Max 验证是否小于等于某个数
- @Digits 数字格式验证
- @Range 数字范围验证
(4)其它检查
- @Email 邮件格式验证
- @Pattern 正则表达式验证
(5)示例
@Validated 触发校验,校验上下文为User user
(6)注意事项
验证注解必须提供:
- message: 验证失败返回的消息
- groups: 验证规则分组
- payload: 验证的有效负荷
6.WebMvcConfigurer
(1)作用
全局定制化SpringBoot的MVC特性。
(2)拦截器
详见我的第一条博客
(3)跨域访问(这条及以下因为没怎么用过,所以献丑不如藏拙了,之后再补)
借助addCorsMappings增加拦截器
(4)格式化
HTTP请求映射到Controller方法时,Spring会自动进行类型转换。借助addFormatters增加格式转换
(5)注册Controller
借助addViewControllers增加控制器
7.Service和Transactional
(1)Service
业务逻辑类,被Controller调用
- 提供业务接口
- 提供业务接口实现类
- 在实现类中增加@Service注解
(2)Transactional
事务管理
- 增加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
- 作用于类上
调用任何方法都会开启一个事务,失败会回滚。 - 作用于方法上
调用指定方法都会开启一个事务,失败会回滚 - 事务中开启新事务
@Transactional(propagation=Propagation.REQUIRES_NEW)
五、mybatis
1. 导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
2. 数据库配置
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/数据库名称?useUnicode=true&characterEncoding=utf-8&useSSL=true&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai
spring.datasource.username=SQL账号
spring.datasource.password=SQL密码
3. Mapper.xml
需要导入头文件:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.mybatis.example.BlogMapper">
<select id="selectBlog" resultType="Blog">
select * from Blog where id = #{id}
</select>
</mapper>
来源:Mybaits官网
4.CRUD等其它详情
详见我的第二条博客
六、前端
1.基本控件
可以去Bookstrap官网,资料全面。或者这里。
2.form表单
< form > 标签用于为用户输入创建 HTML 表单。
表单能够包含 input 元素,比如文本字段、复选框、单选框、提交按钮等等。
表单还可以包含 menus、textarea、fieldset、legend 和 label 元素。
表单用于向服务器传输数据。
(1)属性
(2)示例
单独补充一下此处input标签当中的formaction属性:
- formaction 属性覆盖 form 元素的 action 属性。
- 该属性适用于 type=“submit” 以及 type=“image”。
- 属性值为url。
学术不精,欢迎各位大佬的吐槽。