SpringBoot----黑马视频地址
网盘链接:https://pan.baidu.com/s/1z8I4IXEuYBepDYbg4ijzUw
提取码:1234
parent
starter
引导类
springboot内置三款服务器
@RequestBody @RequestParam @PathVariable
@RestController = @Controller + @ResponseBody
复制工程时,模板module文件样式:
属性配置方式:
@Value(“${一级属性名.二级属性名}”)
//使用自动装配将所有的数据封装到一个对象Environment中
@Autowired
private Environment env;
// 使用方式
System.out.println("-----------------------------");
System.out.println(env.getProperty("server.port"));
System.out.println(env.getProperty("user.name"));
//1.定义数据模型封装yaml文件中对应的数据
//2.定义为spring管控的bean
@Component
//3.指定加载的数据
@ConfigurationProperties(prefix = "datasource")
public class MyDataSource {
private String driver;
private String url;
private String username;
private String password;
}
// 省略 toString()、setXxx()、getXxx()
//使用
@Autowired
private MyDataSource myDataSource;
注意yml文件中的数字信息,eg: 0127 会被当做八进制数 转换为 十进制的 87.
MyBatis-Plus是中国人开发的
使用改框架可以节省Dao接口的编写,直接让接口继承 BaseMapper<>
使用Lombok简化POJO开发
需要用拦截器实现
@Configuration
public class MPConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
return interceptor;
}
}
使用命令行杀死进程
java -jar springboot –server.port=8080
1.同一个文件内用 —分隔开
# 应用环境
spring:
profiles:
active: pro
# 设置环境
# 生产环境
---
spring:
config:
activate:
on-profile: pro
server:
port: 80
---
# 开发环境
spring:
config:
activate:
on-profile: dev
server:
port: 81
---
# 测试环境
spring:
config:
activate:
on-profile: test
server:
port: 82
yml文件和properties文件操作方式相同
spring:
profiles:
active: dev
inclue:
#现在用group
group:
"dev": devDB,devMVC
"pro": proDB,proMVC
include: 中的文件先加载最后加载 dev
group: 先加载dev,最后加载devMVC
日志基础
日志级别
日志输出格式控制
日志文件
重启
ctrl+alt+shift+/
默认不触发重启的目录列表
关闭热部署功能
在使用了@EnableConfigurationProperties()后需要关闭@Component
宽松绑定不支持注解@Value引用单个属性的方式
prefix 中用小写字符
避免测试的数据影响数据库
随机测试数据
现有数据层解决方案技术选型
Druid + MyBatis-Plus + MySQL
应用场景:
@SpringBootTest
class Springboot15SqlApplicationTests{
@Test
void testJdbcTemplate(@Autowired JdbcTemplate jdbcTemplate){
String sql = "select * from tbl_book";
RowMapper<Book> rm = new RowMapper<Book>() {
@Override
public Book mapRow(ResultSet rs, int rowNum) throws SQLException {
Book temp = new Book();
temp.setId(rs.getInt("id"));
temp.setName(rs.getString("name"));
temp.setType(rs.getString("type"));
temp.setDescription(rs.getString("description"));
return temp;
}
};
List<Book> list = jdbcTemplate.query(sql, rm);
System.out.println(list);
}
}
需要导入依赖
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-jdbcartifactId>
dependency>
yml中的jdbcTemplate配置
H2数据库:线上运行时请务必关闭
主流NoSQL
启动Windows端redis时,一个小bug的解决方式
redis整合流程
RedisTemplate是以对象为基本操作单元
StringRedisTemplate以字符串为基本操作单元
应用场景:
Mongodb数据库下载
阉割版操作系统可能出现的问题
Elasticsearch是一个分布式全文搜索引擎
all是虚拟字段,内容由name和description内容组成.
{
"mappings":{
"properties":{
"id":{
"type":"keyword"
// 用indext来设置是否用于查询
// "index":true
},
"name":{
// 设置参与配置的字段
"type":"text",
"analyzer":"ik_max_word",
"copy_to":"all"
},
"type":{
"type":"keyword"
},
"description":{
// 设置参与配置的字段
"type":"text",
"analyzer":"ik_max_word",
"copy_to":"all"
},
"all":{
"type":"text",
"analyzer":"ik_max_word"
}
}
}
}
用put请求修改数据,需要把只改一个字段数据时,更新后的该数据只保留一个字段,其他字段数据删除
用update请求更改数据,只改一个字段数据时,其他字段数据不会改动
es整合:
其中使用了fastjson 依赖
配置中添加 spring.cache.type=simple
springboot没有整合memcacahed,所以需要自己定义版本号和提供属性
j2cache-spring-boot2-starter 中包含有redis
定义任务
3个邮件相关协议
一个规范,与JDBC相同
下载地址
启动服务
整合流程
建议使用Chrome访问,edge打不开
direct exchange 整合流程
两个listener轮询处理
topic exchange 整合流程
启动RocketMQ
整合流程
整合流程
监控的意义
监控的方式
二者简化
配置通过web端读取监控信息
adming服务端一定要做成一个web项目把功能开放出来,这样才能监控到这个应用
management:
endpoint:
health:
show-details: always
info:
enable: false
endpoints:
web:
exposure:
# 端点功能暴露
include: "*"
# 端点功能开启与关闭
enabled-by-default: true
为Metrics端头添加自定义指标
加载方式一:
加载方式二:
指定加载bean的位置, @component, @configuration
实现对bean加载到容器之前的批处理操作
加载配置类并加载配置文件
@import导入的bean,在容器中的名称为全路径名称
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oYL1IHZL-1654171453493)(https://typora—pic.oss-cn-hangzhou.aliyuncs.com/img/image-20220530004320491.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aI70pvpB-1654171453495)(https://typora—pic.oss-cn-hangzhou.aliyuncs.com/img/image-20220530004413927.png)]
小结:
判断key是否存在
采用@Import注解 生成bean, 因为@configurationproperties生成的bean名称与EL表达式冲突