@Configuration // 1.标志配置类,使得springboot容器可以扫描到 @EnableScheduling // 2.开启定时任务 @Slf4j public class MyTask { //3.添加一个任务,并且注明任务的运行表达式 @Scheduled(cron = "*/5 * * * * ?") public void publishMsg(){ log.warn("开始执行任务"+ LocalDateTime.now()); } /* * 分布式不适用 * */
* 自义定异常
* 目的:
* 统一处理异常
* 便于解耦,可以在拦截器,控制层,业务侧去使用
* 比如正常情况返回前端是list,错误是string 解耦后错误返回异常就行
public class MyCustomException extends RuntimeException{ public MyCustomException(String erroMsg) { super(erroMsg); } }
* 优雅的处理异常,进行调用
* */
public class GraceException { public static void display(String errMsg){ throw new MyCustomException(errMsg); } }
//调用
if (!"1001".equals(userId) || !"abc".equals(userToken)){ log.error("用户校验不通过,信息不匹配"); GraceException.display("用户校验不通过,信息不匹配"); return false; }
spring:
servlet:
multipart:
file-size-threshold: 500KB # 文件上传的大小限制,设置最大值,不能超过
max-request-size: 2MB # 请求的最大值,用于批量
获取Request参数
public class StuController { @GetMapping("{stuId}/get") public String getStu(@PathVariable("stuId") String stuId, @RequestParam("name") String name, @RequestParam Integer id){ /* * @RequestParam: 用于获得url中的参数,如果参数变量名保持一致,该注解可以省略 * */ log.info("stuId="+stuId); log.info("name="+name); log.info("id="+id); return "查询Stu"; } /* * @RequestBody 可以是一个对象也可以是一个Map * @RequestHeader 获取请求头信息 * */ @PostMapping("create") public String createStu(@RequestBody Map<String,Object> map, @RequestHeader("token") String token, @CookieValue("clientId") String clientId, HttpServletRequest request){ log.info("map="+map.toString()); log.info("token="+token); log.info("clientId="+clientId); String headerToken = request.getHeader("token"); log.info("headerToken="+headerToken); return "新增Stu"; }
在Spring框架中,处理HTTP请求时,常用的注解用于接收不同类型的参数。以下是这些注解的详细说明:
@RequestParam
用途: 用于接收URL中的查询参数(Query Parameters)。
示例:
@GetMapping("/example") public String exampleMethod(@RequestParam String name) { return "Hello, " + name;}
当访问 /example?name=John 时,name 参数的值为 "John"。
@PathVariable
用途: 用于接收URL路径中的变量(Path Variables)。
示例:
@GetMapping("/example/{id}") public String exampleMethod(@PathVariable Long id) { return "ID: " + id;}
当访问 /example/123 时,id 参数的值为 123。
@RequestBody
用途: 用于接收HTTP请求体(Request Body)中的数据,通常用于POST、PUT等请求。
示例:
@PostMapping("/example") public String exampleMethod(@RequestBody User user) { return "Received user: " + user.getName();}
请求体中的JSON数据会被自动转换为 User 对象。
@RequestHeader
用途: 用于接收HTTP请求头(Request Headers)中的信息。
示例:
@GetMapping("/example") public String exampleMethod(@RequestHeader("Authorization") String authToken) { return "Authorization token: " + authToken; }
获取请求头中的 Authorization 字段值。
@CookieValue
用途: 用于接收HTTP请求中的Cookie值。
示例:
@GetMapping("/example") public String exampleMethod(@CookieValue("sessionId") String sessionId) { return "Session ID: " + sessionId; }
获取名为 sessionId 的Cookie值。
总结
@RequestParam: 用于接收URL查询参数。
@PathVariable: 用于接收URL路径变量。
@RequestBody: 用于接收请求体中的数据。
@RequestHeader: 用于接收请求头中的信息。
@CookieValue: 用于接收请求中的Cookie值。
这些注解在Spring MVC中非常常用,能够帮助开发者方便地处理不同类型的请求参数。
Restful 接口请求风格
@GetMapping("get")
public String getStu(){
return "查询Stu";
}
@PostMapping("create")
public String createStu(){
return "新增Stu";
}
@PutMapping("update")
public String updateStu(){
return "修改Stu";
}
@DeleteMapping("delete")
public String deleteStu(){
return "删除Stu";
}
lombok 插件
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
@Data //生成get和set方法
@ToString //生成toString方法
@NoArgsConstructor //生成无参构造方法
@AllArgsConstructor //生成全参构造方法
@Slf4j // 日志
log.debug()
log.info()
log.warn
log.error
public class Student {
private String name;
private Integer age;
private String sex;
}
弊端 需要每个人都要配置这个
logo 命名为favicon.ico
默认static 在根目录访问 -目录层级更改
#spring:
# mvc:
# static-path-pattern:
# banner:
# image: 图片,
# location: txt
但企业前后端分离不在static编写前端代码
自定义配置
yml ,properties注入
@Value("${}")
在属性资源文件写一些固定的配置 如密钥,加密信息
使用config.properties不需要构造函数
bootstrap属性不会被覆盖
springboot 内嵌 web容器
以前配置端口号 ,在tomcat -> server.xml 配置
创建application.yml (.properties)
属性有Tab缩进,值有空格
status:
4xx 表示前端问题,接口存在但路由出问题
可能是url method body headers params等
5xx 后端问题
@RequestMapping 注解用于将HTTP请求映射到特定的处理方法上。它可以用于类级别和方法级别
@ResponseBody 注解用于指示Spring将方法的返回值直接写入HTTP响应体中,而不是进行视图解析。通常用于返回JSON、XML等格式的数据。
项目构建完 --> maven -> install
@RestController = @ResponseBody + @Controller
引入父工程 spring-boot-starter-parent, 它包含了很多springboot的子工程(elasticsearch...).
注册拦截器
很清楚了
各种@其实都会被扫描到,不同的注解可能只是帮助理解代码?
和stu相关的业务路由
application.yml 主要用于springboot项目的配置
bootstrap.yml 主要用于:
springcloud
加密解密
固定参数
lombok注解
课程中
java -version
1.8.0_191
mvn -v
Apache Maven 3.6.0
微服务也离不开springboot
配置pom文件,引入Hibernate依赖
name和sex加上相应的校验注解,由于id是数据库自增的,所以id属性不用加
用BindingResult来存放验证结果,对应获取验证结果的代码如下:
@RestController = @Controller + @ResponeBody
SpringBoot注解作用
1.学前基础:Maven、Spring、MVC理念
2.开发环境:JDK 8+、Maven 3.x
-Spring Boot是Spring的一个技术栈
3.系统环境配置:springboot2.5.0,Java 8、spring framework 5.3.7+、maven 3.5+、gradle 6.8x,6.9x,7.x
4.容器:tomcat9.0 4.0,jetty9.4 3.1,jetty10.0 4.0,undertow2.0 4.0
1.学前基础:Maven、Spring、MVC理念
2.开发环境:JDK 8+、Maven 3.x
-Spring Boot是Spring的一个技术栈
Aplication.java是运行的地方
@Spring BootApplication表明这是一个启动类
Controller控制层,被Spring容器扫描;@RequestMapping("")映射;@ResponseBody将返回视图转换成字符串或其他
@Rest Controller效果相当于@ResponseBody和@Controller的结合
SSM