springboot⼏种开发模式_SpringBoot基础系列⼀
SpringBoot基础知识概览
计算机哪个岗位工资高特性text提取时间中的年月日
核⼼理念:约定优于配置
特点:
1、 开箱即⽤,根据项⽬依赖⾃动配置
2、 功能强⼤的服务体系,如嵌⼊式服务、安全
3、 绝⽆代码⽣成,不⽤写.xml配置,⽤注解和java配置来完成
4、 完美融合第三⽅技术
SpringBoot注解
核⼼注解及其组成
⼀、 SpringBoot的核⼼注解
SpringBoot的核⼼注解是@SpringBootApplication,⽤来标识主配置类,才能启动项⽬
@SpringBootApplication是⼀个复合注解,Ctrl键进⼊之后可以看到它的多个组合注解
其中重点的注解是@SpringBootConfiguration和@EnableAutoConfiguration还有@ComponentScan
@SpringBotConfiguration
@SpringBootConfiguration注解包含⼀个注解@Configuration表⽰这是⼀个配置类(代替以前使⽤的配置⽂件)
@Configuration含义:
1、 表⽰该类是⼀个配置类
2、 加了这个注解的类会⾃动加⼊Spring容器内(Spring中使⽤的是@Component注解)
@EnnableAutoConfiguration
c++自学软件@EnableAutoConfiguration使SpringBoot可以⾃动配置(即约定优于配置)
@EnableAutoConfiguration注解中⼜包含了多个注解
其中重点的注解是@AutoConfigurationPackage和@Import({AutoConfigurationImportSelector.class})
@AutoConfigurationPackage⾃动将包装⼊到扫描器
实现过程:
因为@AutoConfigurationPackage注解中⼜⼜⼀个注解@Import(Register.calss)
火狐浏览器网站进⼊到Register⾥⾯可以看到
这个函数就可以将@SpringBootApplication所在类的包及其⼦包纳⼊Spring容器
@Import({AutoConfigurationImportSelectot.class})可以引⼊三⽅依赖纳⼊到Spring容器(上⾯注解是将⾃⼰写的包纳⼊容器)
实现过程:
进⼊AutoConfigurationImportSelectot类中可以看到有⼀个函数selectImports,这个函数就是⽤来引⼊三⽅依赖 根据META-INF下⾯的spring.factories来装配第三⽅依赖
总结:
编写项⽬时,⼀般会对⾃⼰写的代码以及三⽅依赖 进⾏配置。但是spring boot可以⾃动进⾏配置:
1、 ⾃⼰写的代码,spring boot通过@SpringBootConfiguration⾃动帮我们配置;
2、 三⽅依赖 通过spring-boot-autoconfigure-2.0.3.RELEASE.jar中的META-INF/spring.factories进⾏声明,然后通过
@EnableAutoConfiguration开启使⽤即可
3、 如何⾃动装配(以研究org.springframework.boot.autoconfigure.web.servlet.HttpEncodingAutoConfiguration为例分析)
观察源码分析可知:
1、 有⼀个@Configuration表⽰这是⼀个配置类,可以⾃动放到SpringIoc容器中
2、 然后有@ConditionalOnProperties(HttpEncodingProperties.class),我们可以进⼊到这个class⾥⾯看到这⾥⾯将默认编码⽅式设置为UTF_8
我们可以⽤类开始声明的prefix+属性名在配置⽂件中修改
### 总结:
(1) 每⼀个XxAutoConfiguration 都有很多条件@ConditionalOnXxx,当这些条件都满⾜时,则此配置⾃动装配⽣效
但是我们可以⼿⼯修改改 ⾃动装配: XxxProperties⽂件中的prefix.属性名=value
(2) 如何知道spring boot开启了哪些⾃动装配、禁⽌了哪些⾃动装配: 在application.properties中添加 debug=true
Positive matches列表 表⽰ spring boot⾃动开启的装配
Negative matches列表 表⽰spring boot在此时 并没有启⽤的⾃动装配。
配置⽂件
1、 SpringBoot有哪⼏种配置⽂件?有什么区别
配置⽂件按照应⽤特性分可分为application⽂件和bootstrap⽂件两种
这两个⽂件⼜分别有.yml和.properties两种格式
appication和bootstrap区别
application⽂件主要⽤于SpringBoot项⽬的⾃动化配置
bootscrap⽂件的特性是由⽗ApplicationContext加载,优先于application加载,且当中的属性不能被覆盖
因此bootstrap⽂件的应⽤场景主要是
*使⽤ Spring Cloud Config 配置中⼼时,这时需要在 bootstrap 配置⽂件中添加连接到配置中⼼的配置属性来加载外部配置中⼼的配置信息;
*⼀些固定的不能被覆盖的属性
*⼀些加密/解密的场景;
.yml和.properties格式区别
主要是书写格式的不同
.yml格式⽂件采⽤k:空格v,通过垂直对齐来指定层次关系的⽅式来书写
.properties格式⽂件采⽤k=v的形式书写
当这两个⽂件同时存在,且属性覆盖冲突时,.properties的优先级⽐.yml优先级⾼
.yml⽂件不⽀持@PropertyResource注解⾃动导⼊配置
application.properties和l⽂件可以存在于四个地⽅
1、 file:项⽬根⽬录
2、 file:项⽬根⽬录conf
3、 classpath:项⽬根⽬录
4、 classpath:项⽬根⽬录conf
这四个地⽅存储的⽂件中设置的属性若不冲突则相互补充,若冲突则优先级从⾼到低眼镜编程培训
修改SpringBoot默认约定的⼏种设置参数⽅法
1、 内部配置⽂件,如上⾯所述的.yml和.properties⽂件
2、 外部配置⽂件D:/appication.properties,如果⼀个属性配置在内部⽂件和外部⽂件中冲突,则外部>内部
调⽤外部配置⽂件的两种⽅式:
* 打成jar包后在命令⾏配置java -jar 项⽬名.jar --fig.location = D:/application.properties
* 在编辑器(如IDEA)中的Run configuration ,argumenets中配置
3、 命令⾏运⾏参数
同理也可以在编辑器中设置Run configuration ,argumenets或者打成jar包之后运⾏时添加命令⾏参数
多环境切换(profile)
有静态切换环境和多态切换环境两种⽅式:
静态切换
静态切换⼜分为在.properties和在.yml中设置两种⽅式
1、 设置多个.properties⽂件
application.properties(默认)
application-dev.properties
application-test.properties
application-prod.properties
在不同的环境配置⽂件中配置不同的参数,然后在application.properties中设置spring.profiles.active = dev/test/prod 2、 在.yml⽂件中设置
在.yml⽂件中配置,不⽤新建多个⽂件,配置⽅式如下
spring: profiles: active: dev --- spring: profiles: dev server: port: 8080 --- spring: profiles: test server: port: 8081动态切换
1、 在开发⼯具如IDEA中设置RunConfiguration -Argument -program Argument
properties是什么文件增加参数--spring.profiles.active = 环境名
2、 命令⾏运⾏jar包时指定运⾏参数
3、 通过设置jvm参数 RunConfiguration -Argument - VM
增加参数-Dspring.profiles.active = 环境名
SpringBoot注⼊值的⼏种⽅式
1、 使⽤配置⽂件注⼊的⽅式
(1)默认可识别l和application.properties两个⽂件的设置
(2)识别.properties⽂件中的配置,使⽤@PropertySource(value={"classpath:conf.properties"})注解
(这种⽅式只能⽤.properties⽂件不能使⽤.yml⽂件)
使⽤这种⽅式在要注⼊class类上添加@Component和@ConfigurationProperties(prefix = 'xx')
在配置⽂件⾥⽤xx.属性名 = 值来注⼊值(.yml格式应对于改变)
2、 使⽤@Value("")直接在属性上注⼊
3、 两种⽅式的区别
简单类型:(8个基本类型/String/Date)
4、 使⽤@ImportSource注⼊(不推荐⽤法)
如果写了Spring以前那种.xml配置⽂件,SpringBoot默认是不识别的
如果⾮要使⽤,可以在主配置类上使⽤@ImportSource(locations="XXXXX")注解来指定路径来注⼊值
SpringBoot starter
SpringBoot starter 是SpringBoot项⽬的启动器,SpringBoot将各个应⽤,第三⽅框架设置成了⼀个个‘场景’starter,你需要⽤到哪个场景你就引⼊哪个场景,SpringBoot会⾃动引⼊该场景需要的所有依赖
如引⼊spring-boot-starter-web就会引⼊构建⼀个web项⽬所需要的所有依赖,包括json、tomcat、webmvc
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论