1.SpringBoot 高级用法
1.1 为属性赋值操作
1.1.1 业务需求说明
说明: 当程序中出现了频繁变化的数据时,如果采用人为的方式进行修改并且变异打包则导致代码的耦合性较高.不便于维护.所以能否为属性动态赋值.
1.1.2 关于YML文件说明
# YML文件语法
# 1. key:(空格) value
# 2. key与key之间有层级的缩进关系.
server:
port: 8090
# 属性赋值操作,编辑属性时注意前缀. 只要springboot启动该数据就会被写入内存中 key-value格式
redis:
host: 192.168.126.130
port: 6379
1.1.3 为属性赋值操作
//动态获取ip和端口数据
//@ResponseBody 作用1: 将对象转化为JSON 作用2: 如果返回值是String类型,则返回字符串本身
// 作用3: 一般客户端发起ajax请求时,采用该注解返回数据, 将不会执行视图解析器操作
@RestController
public class RedisController {
@Value("${redis.host}") //spel表达式
private String host; // = "192.168.126.130"; private String host; // = "192.168.126.130";
@Value("${redis.port}")
private Integer port; // = 6379;
@RequestMapping("/getMsg")
public String getMsg(){
return host + ":" + port;
}
}
1.2 指定配置文件为属性赋值
说明: 由于YML配置文件中的数据一般都是系统级别的数据,所以一般的业务数据都会写到properties的配置文件中.
1.2.1 编辑properties配置文件
1.2.2 编辑RedisController
package com.jt.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
//动态获取ip和端口数据
//@ResponseBody 作用1: 将对象转化为JSON 作用2: 如果返回值是String类型,则返回字符串本身
// 作用3: 一般客户端发起ajax请求时,采用该注解返回数据, 将不会执行视图解析器操作
@RestController
//动态的导入pro配置文件,交给spring容器进行加载.
@PropertySource("classpath:/properties/redis.properties")
public class RedisController {
@Value("${redis.host}") //spel表达式
private String host; // = "192.168.126.130"; private String host; // = "192.168.126.130";
@Value("${redis.port}")
private Integer port; // = 6379;
@Value("${pro.redis.host}")
private String proHost;
@Value("${pro.redis.port}")
private Integer proPort;
//指定properties文件进行赋值操作.
@RequestMapping("/getMsg")
public String getMsg(){
//从yml配置文件中动态获取
return host + ":" + port;
}
@RequestMapping("/getPro")
public String getPro(){
return proHost + ":" + proPort;
}
}
1.3 环境切换
业务说明:由于开发时都是链接公司自己的数据库/服务器等.把这个环境称之为"开发环境."
当开发完成之后需要进行上线部署,则需要链接"生产环境"
如果频繁的切换环境,则导致项目由于修改错误,导致问题的发生.
项目优化: 能否提供一种策略.简化上述操作的开发过程.
#第一份配置文件,用来指定默认的环境标识
spring:
profiles:
active: prod
---
# YML文件语法
# 1. key:(空格) value
# 2. key与key之间有层级的缩进关系.
#指定环境的名称
spring:
profiles: dev
server:
port: 8090
# 属性赋值操作,编辑属性时注意前缀. 只要springboot启动该数据就会被写入内存中 key-value格式
redis:
host: 192.168.126.129
port: 6379
# 1.需要将环境一分为二
---
spring:
profiles: prod
server:
port: 9000
# 属性赋值操作,编辑属性时注意前缀. 只要springboot启动该数据就会被写入内存中 key-value格式
redis:
host: 111.111.111.111
port: 7000
1.4 关于lombok说明
1.4.1 添加jar包
<!--引入插件lombok 自动的set/get/构造方法插件 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
1.4.2 lombok案例
1.4.3 问题
说明:如果需要使用lombok工具就必须提前安装插件.如果在上线的时候Linux系统中,是否需要提前安装lombok插件?? 不需要安装.
原因: lombok插件在编译器有效. 将.java文件编译为.class文件时lombok会动态的添加get/set/toString…等方法.添加到.class文件中.
Linux上线部署时运行的时.jar文件 .jar包含的文件(.class文件)
1.4.4 知识小结
1.SpringBoot 开箱即用原理;
2.属性赋值的操作 @Value("${}")
3.动态导入资源文件 @PropertySource(“classpath:/properties/redis.properties”)
4.环境的切换 —, spring.profiles: dev ,默认的选项
5.lombok常用操作
2.SpringBoot整合Mybatis
2.1 新建项目
暂时只需要勾选webjar包即可
2.2 导入jt.sql的数据库
2.2.1 准备数据库工具
2.2.2 链接数据库
2.2.3 添加jar包文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.jt</groupId>
<artifactId>springboot_demo2_mybatis</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot_demo2_mybatis</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--引入插件lombok 自动的set/get/构造方法插件 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!--引入数据库驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--springBoot数据库连接 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!--spring整合mybatis 暂时 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2.2.4 编辑POJO对象
@Data
@Accessors(chain = true)
public class User implements Serializable {
private Integer Id;
private String name;
private Integer age;
private String sex;
}
2.2.5 编辑UserDao接口
@Mapper //将接口交给Spring管理
public interface UserDao {
//查询user表的所有的记录
@Select("select * from user")
List<User> findAll();
}
2.2.6 编辑测试类
package com.jt;
import com.jt.dao.UserDao;
import com.jt.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
@SpringBootTest
class SpringbootDemo2MybatisApplicationTests {
@Autowired
private UserDao userDao;
@Test
public void testFind(){
List<User> userList = userDao.findAll();
System.out.println(userList);
}
}