springboot 笔记(简单整理)
来源:互联网 发布:算法导论第二版答案 编辑:程序博客网 时间:2024/06/05 20:57
springboot 笔记(简单整理)
1、springboot的配置文件
可以使用 .properties的文件来配置,但是相比于 .yml文件,前者的配置相对繁琐。
.yml文件配置如下(配置数据库)
spring: profiles: active: dev datasource: password: 11111 username: root url: jdbc:mysql://127.0.0.1:3306/dbgirl?useUnicode=true&characterEncoding=utf8 driver-class-name: com.mysql.jdbc.Driver jpa: hibernate: ddl-auto: update show-sql: true
.yml文件中也可以配置对象及其属性,可以用@value来调用,或者新建一个配置类
girl: cupSize: B age: 18
配置类GirlProperties,若需要使用其中的属性,在需要调用的地方配置@autowired注解,把该类直接注入就行
@ConfigurationProperties(prefix = "girl")@Componentpublic class GirlProperties { private String cupSize; private Integer age; public String getCupSize() { return cupSize; } public void setCupSize(String cupSize) { this.cupSize = cupSize; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; }}
2、数据库的操作
由于数据库的配置中我们使用的是hibernate的配置,因此我们无需自己写sql语句,直接新建一个接口继承JpaRepository接口。JpaRepository接口的泛型中前者是实体类名,后者是主键的类型。用此接口可以调用各种增删改查的方法,但仅限于单表。
public interface GirlRepository extends JpaRepository<Girl,Integer> {}
调用代码如下(以查询所有的数据为例)
public class GirlController { @Resource private GirlRepository girlRepository; @Resource private GirlService girlService; @GetMapping(value = "/girls") public List<Girl> getGirls() { return girlRepository.findAll(); }}
3、事务管理
springboot的事务采用注解的方式,注解为 @Transactional,在需要用到事务的方法上直接添加注解就行。
4、表单验证
springboot的表单验证功能由注解@Valid 实现。
如需要实现18岁以下的女孩无法添加进数据库的功能,代码实现如下:
a、在实体类年龄的属性前做一个最小值限定@Min(value = 18,message = “未成年少女禁止入内”)。
@Entitypublic class Girl { @Id @GeneratedValue private Integer id; private String cupSize; @Min(value = 18,message = "未成年少女禁止入内") private Integer age; .........}
b、在controller层接收参数时进行验证
@PostMapping(value = "/add")public Girl addGirl(@Valid Girl girl, BindingResult bindingResult) { if (bindingResult.hasFieldErrors()) {System.out.println(bindingResult.getFieldError().getDefaultMessage()); return null; } girlRepository.save(girl); return girl;}
5、AOP处理请求
创建切面,注解@Aspect,同时要创建切点 @Pointcut,对于在该切点之前还是之后执行,由通知的注解决定(@Before,@After…)
@Aspect@Componentpublic class HttpAspect { private final static Logger logger = LoggerFactory.getLogger(HttpAspect.class); @Pointcut("execution(public * net.bruce.demo.controller.GirlController.*(..))") public void log() { System.out.println(11111); } @Before("log()") public void test1(JoinPoint joinPoint) { ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); HttpServletRequest request = requestAttributes.getRequest(); //url logger.info("url={}", request.getRequestURL()); //method logger.info("method={}", request.getMethod()); //ip logger.info("ip={}", request.getRemoteAddr()); //param logger.info("param={}", joinPoint.getArgs()); //类方法 logger.info("class_method={}", joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName()); } @After("log()") public void test2() { logger.info("33333"); } @AfterReturning(pointcut = "log()",returning = "object") public void test3(Object object){ logger.info("response={}",object); }}
5、统一异常处理
a、一般自定义一个异常
public class GirlException extends RuntimeException{ private Integer code; public GirlException(ResultEnums resultEnums) { super(resultEnums.getMsg()); this.code = resultEnums.getCode(); } public Integer getCode() { return code; } public void setCode(Integer code) { this.code = code; }}
b、定义一个异常处理器,可处理特定异常,也可以处理全局的其他异常
“`
@ControllerAdvice
public class Handle {
@ExceptionHandler(value = Exception.class)@ResponseBodypublic Result handle(Exception e){ if (e instanceof GirlException){ GirlException girlException= (GirlException) e; return ResultUtil.error(girlException.getCode(),girlException.getMessage()); }else { return ResultUtil.error(ResultEnums.UNKNOWN_ERROR.getCode(), ResultEnums.UNKNOWN_ERROR.getMsg()); }}
}
阅读全文
0 0
- springboot 笔记(简单整理)
- springBoot【笔记整理】
- SpringBoot+MockMvc测试Controller笔记整理
- springboot笔记(一)
- springboot笔记(2)springboot-Mybatis使用
- SpringBoot自我整理学习1(springboot入门)
- SpringBoot自我整理学习2(springboot集成Druid)
- 简单概述SpringBoot(一)
- oracle数据库简单笔记整理
- SpringBoot自学笔记(二)
- SpringBoot自学笔记(三)
- SpringBoot自学笔记(四)
- springboot 学习笔记(一)
- springboot 学习笔记(一)
- springboot 学习笔记(一)
- SpringBoot看书笔记(1)
- (转载)SpringBoot学习笔记
- Android Message 简单学习笔记(转载与整理)
- Eclipse的.properties文件输出中文成unicode编码
- protocol buffers c语言的使用
- Android HttpURLconnection使用POST请求参数是json
- MySQL主从(一):基本安装部署
- windows xftp 无法向Ubuntu传输文件
- springboot 笔记(简单整理)
- Android Studio使用心得与技巧
- shell里的getopts
- ThreadPoolExecutor线程池参数设置
- 即时通讯:用户注册保存自定义昵称带表情后台SQL异常
- 安卓传感器+WIFI
- 从git导入项目到Android studio
- JAVA JDBC连接SQL Server数据库进阶(一)---ConnectionFactory
- MySQL常见的三种存储引擎