索引
- 过滤指定目录和文件
- REST风格API
- 路径变量和注解的简写
- YML语法联想失效
- 在Java程序中读取YML中定义的值
- 使用数据类装填YML中的属性对象
- 引入JUnit进行单元测试
- 引入MyBatisPlus
- 引入Druid数据源
- Lombok关于构造方法的使用
- 关于业务层、数据层实现的几个知识点
- 数据格式统一
- yml配置文件级别
- SpringBoot多开发环境配置
- Logback的相关用法
过滤指定目录和文件
Setting > Editor > File Types > Ignored Files and Folders
比如这里我要把.idea目录过滤了
REST风格API
相较于一般通过getXXX、setXXX作为接口访问名区别操作的方式,定义一套REST风格的API可以直接通过访问类型进行操作的定义,只需要在相应的接口文档里注明该接口的用途和用法就好
REST风格定义统一的接口访问路径
通过GET、POST、PUT、DELETE等请求形式来定义接口的用途
例子:http://localhost/users
GET: 查询用户信息
POST: 添加用户信息
PUT:更新用户信息
DELETE : 删除用户信息
书写的时候记得使用复数词,如user→users、book→books
@RestController
@RequestMapping("/books")
public class BookController {
@Autowired
private IBookService bookService;
@PostMapping
public ResultData addBook(@RequestBody Book book){
boolean isAdd = bookService.addBook(book);
if(isAdd){
return ResultData.build(1);
}else{
return ResultData.build(0);
}
}
@PutMapping
public ResultData setBook(@RequestBody Book book){
boolean isSet = bookService.setBook(book);
if(isSet){
return ResultData.build(1);
}else{
return ResultData.build(0);
}
}
@DeleteMapping("{id}")
public ResultData delBook(@PathVariable Integer id){
boolean isDel = bookService.delBook(id);
if(isDel){
return ResultData.build(1);
}else{
return ResultData.build(0);
}
}
@GetMapping("{id}")
public ResultData getBook(@PathVariable Integer id){
Book book = bookService.getBook(id);
if(book != null){
return ResultData.build(1,book);
}else{
return ResultData.build(0);
}
}
}
路径变量和注解的简写
路径变量参数注解@PathVariable , 需要把RequestMapping中的value修改为 "路径"+"/"+{具体的参数名}的形式
@RequestBody和@RequestMapping => 作为类注解就不用每个方法上都写了
@Controller + @ResponseBody => @RestController
@RequestMapping(method = RequestMothod.POST) => @PostMapping....
YML语法联想失效
Project > Project Structure > Facets > 找到对应的工程 > 点击add , 在文件里加入yml/yaml配置文件
在Java程序中读取YML中定义的值
在yml中配置数据,并在controller中读取的方式
简而言之是${一级属性名.二级属性名}
//读取单级字符串
@Value("${定义yml的值名字}")
//读取多级字符串,一般可以指的是类的对象
@Value("${父级.子级.xxxxx}")
//读取数组中指定位置的字符串
@Value("${数组[下标]}")
//读取一个数组对象下的数据 可以按上面的那个改 后面直接点xxx
@Value("${数组[下标].xxx属性}")
在yml中的值引用另一个值,例如引用一个基本的路径配置信息等
使用{parent}\data
其实跟在Java理用@Value一样,只是Java要用@Value来标记
使用一个对象取出想要的YML属性值
为yml资源定义统一的读取方式,不需要再一个个单独写Value,一个变量就可以读取想要的数据
@Autowired //自动装配
private Environment env ;
调用方式:
env.getProperty("一级属性.二级属性")
跟Value一样调
和使用Value不一样的是,这里不用写@{}
使用数据类装填YML中的属性对象
将yml中的数据批量的导入进java程序中
需要将yml的数据封装成一个结构数据,并且java这边定义一个模型类进行一对一封装
需要注意参数名和YML要保持一致
@Component
@ConfigurationProperties(prefix="此处为yml中的对象名")
public class Enterprise{
private String name ;
private Integer age ;
private String[] subject ;
}
因为该数据实体需要被Spring管控,所以对于数据实体类,需要挂上@Component注解,否则无法进行@Autowrite依赖注入
引入JUnit进行单元测试
JUnit:做java程序测试的
引入JUnit后 其Test包内就会自动的把测试配置文件配置好,测试的工程是默认导入的,不用另外导
void contextLoad(){
这里的内容是直接可运行的,不用做更多的配置
}
@Repository 写在数据层上的 使这个类可以被SpringBoot管理
测试方法:
1、注入需要测试的对象@Autowrite
2、执行要测试的对象对应的方法
引入MyBatisPlus
gradle :
compile group: 'com.baomidou', name: 'mybatis-plus-boot-starter', version: 'Latest Version'
Maven:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>Latest Version</version>
</dependency>
引入Druid数据源
这个东西是给数据库用的,需要手动引入依赖坐标
Maven:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid-version}</version>
</dependency>
Gradle:
compile group: 'com.alibaba', name: 'druid-spring-boot-starter', version: 'Latest Version'
配置方式:将原先yml数据库配置中的spring.datasource.xxx改为spring.datasource.druid.xxx
Lombok关于构造方法的使用
@AllArgsConstructor: 全部参数的构造方法
@NoArgsConstructor : 无参构造方法(也可以不加,不加默认无参)
关于业务层、数据层实现的几个知识点
- 业务层 数据层 要分层分开
- 业务层接口service包,下属定义好需要用到的数据接口,如增删改查,放到光之收藏家的业务中去,比如用户模块,此时service中应该是getUser、checkLogin、getUserInfo、getForkUser等查询接口
- 数据层impl包,指的是业务层接口具体的实现方式,这里通常就是要把Mapper等一些东西注入进来了,并且需要为其class加上@service注解让其受SpringBoot管理
- 业务层方法必须要写测试用例
- 接口前面要加I,比如IReaderService
数据格式统一
定义一个模型类,类似收藏家项目里的ResultData ,为其增加注解@Data(Lombok)
yml配置文件级别
定义多种级别的配置文件,在银行类的系统中,只允许程序员变更最低等级的配置,对于最高等级的配置比如银行数据库的账号密码,不允许读写,所以才有了配置文件分级的概念。
- file : config/application.yml 【最高级配置文件,比如银行的数据库信息就在此,通常会限制文件夹读写】
- file : application.yml 【运行根目录下的yml文件提供给运维人员编辑查看运维数据的时候使用】
- classpath : config/application.yml 【交由后端开发Leader进行控制的】
- classpath : application.yml 【日常开发人员使用的配置文件】
SpringBoot多开发环境配置
在日常开发中,我们总是遇到需要配置一套开发环境、测试环境和生产环境的情况,SpringBoot考虑到了我们的需求,为我们提供了多环境的配置文件,只需要将application.yml修改为application-prod/dev/test.yml即可。
应用的时候可以在服务器上的JVM或启动参数上加上spring.profiles.active = prod 使其强制采用线上环境,保证不出错。在本地的代码中配置设置成dev环境即可。
使用配置组,配置多套配置文件
在代码开发的过程中可能会遇到以前的代码不能动,但又要改的情况,这时候可以在其配置文件后引用新的配置文件,让其新属性覆盖指定的旧属性即可
spring:
profiles:
active : dev
group :
"dev": devDB , devMVC ,xxx
最后一个配置会覆盖前面的配置生效
Logback的相关用法
使用方式
使用最普通的创建对象的方式初始化logback
Logger log = LoggerFactory.getLogger(xxx.class);引用Lombok,在类上挂上@Slf4j就行, 加入注解后,Logger对象就叫log
输出格式
logging:
pattern :
console : "%d - %m%n"
%d:日期
%m :消息
%n : 换行
这里的日志输出格式,了解一下就好,用的时候再去查
记录日志文件
logging : file : name : 文件名.log
默认会在你项目的根目录底下
logging: file-name-pattern : 设置LOG文件名怎么记录
例:log.%d.%i.log => log.2022-03-27.0.log 前缀.日期.日志循环变量.log
logging : max-file-size : 设置最大文件大小 超过就不计了 一般设10M 超过了就打不开了