构建SpringBoot环境黑马程序员六小时急速教程
- 创建Maven项目
- 导入SpringBoot依赖
- 定义Controller
- 编写引导类 - springbootapplication
- 启动测试
SpringBoot起步依赖原理分析
- Spring-boot-starter-parent:定义版本信息,组合了一套最优搭配的技术版本,引入starter后,通过依赖传递,就可以简单获得jar包,并不会存在版本冲突问题
- spring-boot-starter-web
SpringBoot配置
springboot很多配置都有默认值,但是如果要使用自己的配置替换文件时,就要使用application.properties或者application.yaml 或yml 进行配置
可以修改系统默认配置/ 自己的配置
- Properties
键值对的方式
server.port=8080
- yml:
YAML server: port: 8080 //一定有空格 |
- ymal
默认名称为application
如果三个在resources中同时存在三种文件,那么在同一级目录下优先级从高到低是:
proprerties > yml > ymal
Yaml
yml文件以数据为核心,比传统的xml方式更为简洁
扩展名可以使用.yml 或者yaml
基本语法
- 大小写敏感
- 缩进表示层级关系,不允许用Tab键,只允许使用空格
- #表示注释
数据格式
- 对象(map): 键值对的集合
- 数组
- 纯量:单个的、不可再分的值
参数引用
- ${key}
读取配置内容
- @Value
如果是注入的话
输出就是person.name所引用的abc
- Environment
- @ConfigurationProperties (注解,形成映射)
Prefix 表示person下面的内容和yml文件里的“person”下面的内容一一对应
@Component 注解代表它被springboot所识别
表示找到yml文件里的person数据,就是下面这个
然后在controller里创建一个Person对象,@Autowired 就是自动加载(?)
输出结果就是yml里面写的
profile
同一套程序会被安排到到不同环境:开发、测试、生产等。其中数据库地址、服务器端口等都不同
profile功能就是进行动态配置切换
profile配置方式
- 多profile文件方式
- application-dev.properties 开发环境
- application-pro.properties 生产环境
- application-test.properties 测试环境
在application.properties里确定用哪一个profiles
- yml多文档方式(已弃用)
写在application.yml里
profile激活方式
- 配置文件
就是上面讲的两种
- 虚拟机参数
VM options:虚拟机参数
这种方法会覆盖spring.profiles.active 方式
- 命令行参数
这种方法也会覆盖spring.profiles.active 方式
未来生产上线的时候没有开发工具,就是把java文件打包成jar包,然后设置对应的配置信息。然后在cmd里面打开(后面再查)
内部配置加载顺序
之前用的resources下面配置的方法,实际上resources会打包,放在classpath:/下面,就是第四种方式
Resources 和 java 包都会打包进classpath下
外部配置加载顺序
SpringBoot整合其它框架
整合Junit
利用Junit进行单元测试
如果UserServiceTest类和UserService类 分别在java和test的同一个文件夹结构下,那么就不用写classes = SpringbootTestApplication.class
整合Redis
整合Mybatis
springboot+mybatis整合配置事务详解(^_^)_jaryle的博客-CSDN博客_springboot 配置事务
SpringBoot 原理分析
自动配置
Condition
条件判断功能,通过这个功能可以选择性地创建Bean *** 作
spring bean是什么 - 歪麦博客
Java //启动SpringBoot应用,返回Spring的IOC容器 public static void main(String[] args) { ConfigurableApplicationContext context = SpringApplication.run(SpringbootMybatisApplication.class, args); } //获取Bean,redisTemplate Object redisTemplate = context.getBean("redisTemplate"); |
@param context 上下文对象。用于获取环境、IOC容器,Classloader对象
@param metadata 注解元对象。可以用于获取注解定义的属性值
切换内置web服务器
@Enable*注解
以Enable开头的注解,都是用于动态启动某些功能的,其底层原理是用@Import 注解导入一些配置类,实现Bean的动态加载
比如说,如果想获取第三方jar包里的Bean方案
- @ComponentScan 扫描范围:当前引导类所在包及其子包
- @Import 注解,加载类。这些类都会被Spring创建,并放进IOC容器中
- 对@Import注解进行封装
@Import注解
@Enable*底层依赖于@Import注解导入一些类,使用@Import导入的类会被Spring加载到IOC容器中。而@Import提供四种用法:
- 导入Bean
- 导入配置类
- 导入ImportSelector实现类。一般用于加载配置文件中的类
- 导入ImportBeanDefinitionRegistrar实现类
@EnableAutoConfiguration 注解
- @EnableAutoConfiguration 注解内部使用@Import (AutoConfigurationImportSelector.class) 来配置类
- 配置文件位置:META-INF/spring.factories,该配置文件中定义了大量的配置类,当SpringBoot应用启动时,会自动加载这些配置类,初始化Bean。
- 并不是所有的Bean 都会被初始化,在配置类中使用Condition来加载满足条件的Bean。
自定义starter步骤分析
自定义redis-starter,要求当导入redis坐标时,SpringBoot自动创建Jedis的Bean。
监听机制
SpringBoot的监听机制,是对Java提供的事件监听机制的封装
Java中的事件监听机制定义了以下几个角色:
- 事件:Event,继承java.util.EventObject类的对象
- 事件源:Source,任意对象Object
- 监听器:Listener,实现java.util.EventListener接口的对象
启动流程分析
SpringBoot 监控
SpringBoot 项目部署
- jar包
- war包
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)