十一摆烂三天跟没学一样,从头来
热部署
①添加热部署依赖
②setting - compiler中勾选Build project automatically
新版idea中,Maintenance - Registry中没有compiler.automake.allow.when.app.running选项,移到了Setting - Advance setting中的Allow auto-make to start even if developed application is currently running选项,勾选即可实现热部署
yml语法
读取配置数据
以yml配置文件为例
一、@Value方法
适合小量的属性单独读取
定义一个变量, 在它的上方添加 @Value 注释,注释中使用"${name}"来从配置文件中获取数据。
变量名可以任意定义,@Value注释中的名字必须和yml文件中对应来读取
也可以用这个方法读取yml中某个对象的某个属性
定义一个方法来输出这些变量,运行刷新浏览器,可以在控制台看到输出
二、Environment方法
定义一个Environment对象env(spring包下),上方加@Autowired注解,即可使用env的getProperty加键名的方法来获取属性
刷新浏览器后控制台输出
三、@ConfigurationProperties方法
用于读取yml对应的对象中的所有数据
首先建立person类,添加setter、gettter和toString方法,且添加注释
其中@ConfigurationProperties中的prefix参数表示前缀,防止对象外有与对象某个属性重名的属性导致读取错误
添加@Autowired注释,建立person对象,在方法中输出person对象查看属性是否与yml配置文件中一致
profile
profile是用来完成不同环境下,配置动态切换功能的
profile配置
一、多profile文件
以yml为例
建立多个yml文件,命名规则为application-xxx.yml
在dev test pro三个文件中分别定义 server.port 为8081 8082 8083
在application.yml中使用spring.profiles.active来选择配置文件,运行后可以在控制台观察到profile文件改变为dev,端口号根据dev文件修改为8081
同理使用test pro也会作出相应改变
二、 yml多文档方式
在一个yml文件中,使用一对 - - - 来实现多个文档部分的区分,spring.profiles.active来定义该部分的名称为dev test pro,分别定义端口号为8084 8085 8086 ,最后在yml文件末尾使用spring.config.activate.on-profile来选择配置文件
最新版springboot不再使用spring.profiles.active来进行选择
profile激活方式 ()
除了在配置文件中配置,还可以使用虚拟机参数、命令函参数方法来进行激活
修改虚拟机参数,选择Edit Configuration,在VM options中按照格式输入
在控制台上看到,虽然能够选择配置文件,但接口号却没有改变,可能是新旧版本springboot的命令不同,暂时没有解决
还是选在在配置文件中进行配置比较好
总结来看还是使用多profile文档+配置文件内配置激活的方法比较直观方便
内部配置加载顺序
共四个配置文件的路径分别为
1.file:./config/ 项目的config目录下
2.file:./ 项目的根目录下
3.classpath:/config/ classpath的config目录
4.classpath:/ classpath的根目录
加载顺序如上,优先级依次降低,高优先级配置的属性会生效,后续配置中的相同属性则不会生效
如四个配置中分别配置server.port 属性,最后生效的是配置1中的8084
整合MyBatis
使用注解开发为例
创建项目选择添加依赖MySQL Driver和MyBatis Framework
首先使用mysql建立一个用例数据库
CREATE DATABASE springboot;
USE springboot;
DROP TABLE IF EXISTS t_user;
CREATE TABLE t_user (
id int(11) NOT NULL AUTO_INCREMENT,
username varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
password varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
insert into t_user(id,username,password) values (1,'zhangsan','123'),(2,'lisi','234');
定义实体类User
配置一 数据源信息DataSource
如用户名、密码、连接地址
使用yml配置文件为例
配置二
创建接口类UserMapper,以查询为例
最后在测试类中注入Mapper接口类,在自定义方法中实现即可
四餐肘子面nice