(转载)SpringBoot学习笔记
来源:互联网 发布:机房控制软件 编辑:程序博客网 时间:2024/05/30 23:45
这次的学习以一个简单的Student Demo为示例。
1、代码:
主程序类DemoApplication.java。
1 package com.julion.demo; 2 3 import org.springframework.boot.SpringApplication; 4 import org.springframework.boot.autoconfigure.SpringBootApplication; 5 6 @SpringBootApplication 7 public class DemoApplication { 8 9 public static void main(String[] args) {10 11 SpringApplication.run(DemoApplication.class, args);12 13 }14 }
实体类Student.java。
1 package com.julion.demo.domain; 2 3 import javax.persistence.Entity; 4 import javax.persistence.GeneratedValue; 5 import javax.persistence.Id; 6 import javax.validation.constraints.Min; 7 8 @Entity 9 public class Student {10 11 @Id12 @GeneratedValue13 private int id;14 15 @Min(value = 10, message = "未满10岁不来塞")16 private int age;17 18 private String name;19 20 public Student(){21 22 }23 24 public int getId() {25 return id;26 }27 28 public void setId(int id) {29 this.id = id;30 }31 32 public int getAge() {33 return age;34 }35 36 public void setAge(int age) {37 this.age = age;38 }39 40 public String getName() {41 return name;42 }43 44 public void setName(String name) {45 this.name = name;46 }47 }
结果类Result.java。
1 package com.julion.demo.domain; 2 3 public class Result<T> { 4 5 private int code; 6 7 private String message; 8 9 private T data;10 11 public int getCode() {12 return code;13 }14 15 public void setCode(int code) {16 this.code = code;17 }18 19 public String getMessage() {20 return message;21 }22 23 public void setMessage(String message) {24 this.message = message;25 }26 27 public T getData() {28 return data;29 }30 31 public void setData(T data) {32 this.data = data;33 }34 }
数据相关类StudentRepository.java。
1 package com.julion.demo.repository; 2 3 import com.julion.demo.domain.Student; 4 import org.springframework.data.jpa.repository.JpaRepository; 5 6 import java.util.List; 7 8 public interface StudentRepository extends JpaRepository<Student, Integer> { 9 10 public List<Student> findByAge(int age);11 12 }
控制类StudentController.java。
1 package com.julion.demo.controller; 2 3 import com.julion.demo.domain.Result; 4 import com.julion.demo.domain.Student; 5 import com.julion.demo.repository.StudentRepository; 6 import com.julion.demo.util.ResultUtil; 7 import org.springframework.beans.factory.annotation.Autowired; 8 import org.springframework.validation.BindingResult; 9 import org.springframework.web.bind.annotation.*;10 11 import javax.validation.Valid;12 import java.util.List;13 14 @RestController15 public class StudentController {16 17 @Autowired18 private StudentRepository studentRepository;19 20 @GetMapping(value = "/student")21 public List<Student> getList(){22 return studentRepository.findAll();23 }24 25 @PostMapping(value = "/student")26 public Result<Student> insert(@Valid Student student, BindingResult bindingResult){27 if (bindingResult.hasErrors()){28 return ResultUtil.error(1, bindingResult.getFieldError().getDefaultMessage());29 }30 31 return ResultUtil.success(studentRepository.save(student));32 }33 34 @GetMapping(value = "/student/{id}")35 public Student getOne(@PathVariable("id") int id){36 return studentRepository.findOne(id);37 }38 39 @PutMapping(value = "/student/{id}")40 public Student updateOne(@PathVariable("id") int id,41 @RequestParam("age") int age,42 @RequestParam("name") String name){43 Student student = new Student();44 student.setName(name);45 student.setId(id);46 student.setAge(age);47 48 return studentRepository.save(student);49 }50 51 @DeleteMapping(value = "/student/{id}")52 public void deleteOne(@PathVariable("id") int id){53 studentRepository.delete(id);54 }55 56 @GetMapping(value = "student/age/{age}")57 public List<Student> getOneByAge(@PathVariable("age") int age){58 return studentRepository.findByAge(age);59 }60 61 }
AOP相关类HttpAspect.java。
1 package com.julion.demo.aspect; 2 3 4 import com.julion.demo.domain.Student; 5 import org.aspectj.lang.JoinPoint; 6 import org.aspectj.lang.annotation.*; 7 import org.slf4j.Logger; 8 import org.slf4j.LoggerFactory; 9 import org.springframework.stereotype.Component;10 import org.springframework.web.context.request.RequestContextHolder;11 import org.springframework.web.context.request.ServletRequestAttributes;12 13 import javax.servlet.http.HttpServletRequest;14 15 @Aspect16 @Component17 public class HttpAspect {18 19 private static final Logger logger = LoggerFactory.getLogger(HttpAspect.class);20 21 @Pointcut("execution(public * com.julion.demo.controller.StudentController.*(..))")22 public void log(){23 }24 25 @Before("log()")26 public void doBefore(JoinPoint joinPoint){27 logger.info("i am before");28 ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();29 HttpServletRequest request = attributes.getRequest();30 31 //url32 logger.info("url={}", request.getRequestURL());33 34 //method35 logger.info("method={}", request.getMethod());36 37 //ip38 logger.info("ip={}",request.getRemoteAddr());39 40 //类方法41 logger.info("class_method={}", joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName());42 43 //参数44 logger.info("args={}", joinPoint.getArgs());45 }46 47 @After("log()")48 public void doAfter(){49 logger.info("i am after");50 }51 52 @AfterReturning(returning = "object", pointcut = "log()")53 public void doAfterReturning(Object object){54 logger.info("response={}", object.toString());55 }56 57 }
结果工具类ResultUtil.java。
1 package com.julion.demo.util; 2 3 import com.julion.demo.domain.Result; 4 5 public class ResultUtil { 6 7 public static Result success(Object object){ 8 Result result = new Result(); 9 result.setCode(0);10 result.setMessage("成功");11 result.setData(object);12 return result;13 }14 15 public static Result success(){16 return success(null);17 }18 19 public static Result error(int code, String message){20 Result result = new Result();21 result.setCode(code);22 result.setMessage(message);23 result.setData(null);24 return result;25 }26 27 }
配置文件application.properties。
server.port=8081server.context-path=/demospring.datasource.driver-class-name=com.mysql.jdbc.Driverspring.datasource.url=jdbc:mysql://127.0.0.1:3306/dbdemospring.datasource.username=rootspring.datasource.password=rootspring.jpa.hibernate.ddl-auto=updatespring.jpa.show-sql=true
2、关于注解:
1) @Entity:注明是实体类。
2) @Aspect:注明是切面。
@PointCut:标注controller的切点。
@Before:在controller切点前进行。
@After:在controller切点后进行。
@AfterReturning:在controller返回后进行。
3) @RestController:注明是controller。与@Controller和@ResponseBody同时注解的功能相当。
@Autowired:注入。
@GetMapping:注明是Get方法。用以查询。
@PostMapping:注明是Post方法。用以增加。
@PutMapping:注明是Put方法。用以更新。
@DeleteMapping:注明是Delete方法。用以删除。
@RequestMapping:注明是请求。
@PathVairable:用以获取形如/xxx/value格式中的value。
@RequestParam:用以获取形如?key=value中的value。
4) @Service:注明是Service。
@Component:注明是Component。
- (转载)SpringBoot学习笔记
- springboot 学习笔记(一)
- springboot 学习笔记(一)
- springboot 学习笔记(一)
- springboot学习笔记-3 整合redis&mongodb【转载】
- springboot 学习笔记(二)--- properties 配置
- springboot 学习笔记(二)--- properties 配置
- Springboot学习笔记(三)JPA-Hibernate
- Springboot学习笔记(四)Repository接口
- Springboot学习笔记(五)JdbcTemplate
- SpringBoot任务调度案例(学习笔记)
- SpringBoot使用JdbcTemplate案例(学习笔记)
- springboot学习笔记003(jpa)
- SpringBoot 学习笔记
- SpringBoot 学习笔记 2
- springboot学习笔记(一)
- SpringBoot学习笔记(一)
- springboot学习笔记
- 今天复习py中的sorted
- 获取特定字符之间的字符串的位置及内容
- Linux操作系统文件变化监控
- JavaScript 简介
- GIT命令记录
- (转载)SpringBoot学习笔记
- initdb -s参数仅输出错误日志或告警信息
- Hash Table -- Leetcode problem500:Keyboard Row
- 网站反爬虫分析
- 8 易彰彪的一张表
- phoenix根据日期范围查询
- 获取手机联系人姓名,电话
- Unity最新的视频插件(非常简单)
- SPI 的 CPOL CPHA