边缘知识
tomcat服务器
tomcat是用java编写的服务器,在springboot中把tomcat的内容全部托管,因此可以使用tomcat服务器。但需要导入依赖tomcat-embed-core和spring-boot-starter-tomcat
同时tomcat也可以被其他的技术所替换,例如Jetty:spring-boot-starter-Jetty
例如:undertow
轻量级的项目可以尝试使用以下配置,tomcat负载能力较强!
springboot封装了这些技术,如果发现哪个技术不好用,直接改依赖就好了~~
REST风格开发(风格不是规范)
Representational State Transfer:表现形式状态转换——一种访问网络资源的格式
哪些不同?
例如:
- 在controller包下的UserController类中,@RequestMapping有8种提交方式method,通过不同的提交方式来区分上图种的不同访问行为
- 路径变量@PathVariable的格式要注意
//Rest模式
@RestController
@RequestMapping("该BookController下的跟访问路径")
public class BookController {
@GetMapping//可以带路径参数,没有可以不写
public String getById(){
System.out.println("springboot is running...");
return "springboot is running...";
}
}
yml配置
springboot——application-properties官方文档
“每一个配置对应的都是一种技术”
同时出现properties.yml.yaml时
- 不同属性相互叠加
- 相同属性优先级:properties>yml>yaml
yml yaml没有自动提示
弹提示的功能是springboot提供的,而不是idea提供的
链接:解决属性提示消失
注:
- IDEA处理yml文件可以使用tab
- 不用加引号
单一取值@Value + SpEL
- 只能在注册类中使用,例如@RestController下
- 可能跟Lombok下的@value冲突
已经在application.yml文件中配置了
user1:
name: 张家豪
users3: [{name:zhangsan,age:18},{name:lisi,age:17}]
users2:
-
name: zhangsan
age: 18
-
name: lisi
age: 17
那么可以在任意位置按如下操作取值
@Value("${name2[1].name}")//取出1号索引位的lisi
private String namexxx;//赋值给namexxx
在配置中引用配置
yml文件中
baseDir: d:/spring/springboot
tempDir: ${baseDir}/temp
转义解析
yml文件不需要加引号“” 如果加了引号,内容将被解析,比如
tempDir: "${baseDir}/temp"
会被转义出一个/t制表符
自动装配Environment
@Autowired
private Environment environment;
这样一来,所有配置信息都封装了,引用的时候用getProperties就可以取出
Spring的取数据方式:Bean绑定
Bean包下
@Component//注入容器,让这个bean成为spring管控的bean
@ConfigurationProperties(prefix = "user1")//前缀
//因为配置了
// user1:
// name: 张家豪
// age: 21
@Data//lombok下的的注解,提供get set等方法
public class UserBean {
private String name;
private int age;
}
controller包下
@Autowired
UserBean userBean;//实例化bean
@GetMapping("/test")
public void beantest(){
System.out.println(userBean);//当页面访问时,控制台输出
}
Autowired和Bean注意点
这两个都是配套使用,Bean代表只有这一个单例并绑定配置文件的哪个前缀;Autowired是注入Bean实例
这个userBean实例只能在当前的controller层读取,不能在其他地方使用
阿里云镜像依赖
1,
2,http://start.aliyun.com
Maven坐标查找主站
www.mvnrepository.com
SSM整合
整合JUnit
-
@SpringBootTest支持@Autowired注入
-
Test依赖会自动生成
@SpringBootTest//表示这是一个测试类
class BootAjaxtestApplicationTests {//1,@Autowired注入要测试的对象
@Test//各个Test方法
void contextLoads() {
//2,Test方法体中调用注入对象的方法或属性}
@Test
void contextLoads2() {
}}
任意位置test(设置引导类)
如果更改了测试类的位置,那么需要修改为
@SpringBootTest(classes = 主类名.class)
即指明测试集的配置类是主类下的 or 这个测试类是主类的测试类
整合MyBatis
配置yml
spring:
datasource:
username: 账号(通常为root)
password: 密码
url: jdbc:mysql://localhost:3306/数据库名
driver-class-name: com.mysql.cj.jdbc.Driver
- url后可以接时区,utf-8等设置
- mysql5.0驱动名去掉cj
Mybatis测试
dao层的使用
DAO层定义的接口可以添加一些方法,并且可以直接注入使用,如果不进行前后端交互,仅仅使用接口就可以了
链接:domain和dao层
domain类就是bean类
有dao和domain才能从数据库拿出来的数据编程bean,bean又可以通过ajax技术转为json和前端交互
@Mapper使其被容器识别到
@Mapper的作用是可以给mapper接口自动生成一个实现类,让spring对mapper接口的bean进行管理,并且可以省略去写复杂的xml文件
@Mapper
public interface YebDao {
@Select("select * from t_joblevel where id = #{id}")
public JobLevel getById(Integer id);
}
需要注入
@SpringBootTest//表示这是一个测试类
class BootAjaxtestApplicationTests {
//1,@Autowired注入要测试的对象,Dao接口也可以注入
@Autowired
private YebDao yebDao;//可能会假报错,能正常运行
//注入了Dao接口,可以使用Dao定义的@Select
@Test
void sql1() {
System.out.println(yebDao.getById(1));
}
}
整合MyBatis-Plus
这玩意是真的叼~
extends BaseMapper<>之后连sql都可以不用写了
1,添加坐标依赖
MyBatis-Plus是国内开发的,只能通过手动在pom.xml添加依赖
<!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.0</version>
</dependency>
坐标查询方式在上面的两个大标题中
2,定义数据层接口于映射配置
@Mapper
public interface YebDao extends BaseMapper<JobLevel> {
//继承BaseMapper,作用于JobLevel的Bean
}
3,MyBatisPlus可用的CRUD方法
一定要关闭驼峰命名
mybatis-plus:
configuration:
# 是否开启自动驼峰命名规则(camel case)映射,
# 即从经典数据库列名 A_COLUMN(下划线命名)
# 到经典 Java 属性名 aColumn(驼峰命名) 的类似映射
map-underscore-to-camel-case: false
整合Druid
同样,德鲁伊是阿里开发的数据源(数据连接池)框架,需要在maven repository找坐标
<!-- https://mvnrepository.com/artifact/com.alibaba/druid-spring-boot-starter -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.6</version>
</dependency>
/****************application.yml************/
#spring:
# datasource:
# username: root
# password: zjh521418
# url: jdbc:mysql://localhost:3306/yeb
# driver-class-name: com.mysql.cj.jdbc.Driver
## type: com.alibaba.druid.pool.DruidDataSource在标准配置下加这句,或下面
整合配置:
spring:
datasource:
druid:
username: root
password: zjh521418
url: jdbc:mysql://localhost:3306/yeb
driver-class-name: com.mysql.cj.jdbc.Driver
#德鲁伊专用配置法
整合总结
- 导入对应的starter依赖
- 对非默认值的项进行配置
postman测试接口
https://www.postman.com/downloads/
教程