逆水行舟 —— SpringBoot
Posted msi-chen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了逆水行舟 —— SpringBoot相关的知识,希望对你有一定的参考价值。
入门Demo就不写了,我们记一点理论的东西
入门 级 pom.xml
<!--jdk版本管理-->
<properties>
<java.version>1.8</java.version>
</properties>
<!--已该项目作为父工程,内部对我们常用依赖的版本做了管理,不会出现版本冲突问题-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.RELEASE</version>
</parent>
?
<dependencies>
<!--web项目的web启动器,会自动引入web相关依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
这个项目已经对我们常用的依赖版本进行了统一管理,我们的项目以这个项目为父工程,就不用担心依赖的版本冲突问题了
配置文件的属性注入
先说说以前的通过注解方式的的属性注入
-
@Configuration
注解:声明我们当前类是一个配置类 -
@PropertySource
注解:指定属性文件的路径 比如:classpath:jdbc.properties
-
@Value("${jdbc.url}")
为属性注入值 -
通过@Bean将 某方法声明为一个注册Bean的方法,Spring会自动调用该方法,将方法的返回值加入Spring容器中。
上面的这种方式只能注入基本数据类型,SpringBoot有自己的一套注入方式,支持复杂类型属性注入
-
在类上通过@ConfigurationProperties注解声明当前类为属性读取类
-
@ConfigurationProperties(prefix = "jdbc") 读取属性文件中,前缀为jdbc的值。
-
在类上定义各个属性,名称必须与属性文件中
jdbc.
后面部分一致 -
需要注意的是,这里我们并没有指定属性文件的地址,所以我们需要把jdbc.properties名称改为application.properties,这是SpringBoot默认读取的属性文件名:
到这里我们就已经把属性文件中的值注入到了类中
-
@Configuration
-
@EnableConfigurationProperties(属性读取类.class)
-
然后通过@Autowired注入该属性读取类 或 通过构造,或通过申明有@Bean的方式自动注入
-
- @Autowired private JdbcProperties prop; ? - private JdbcProperties prop; public JdbcConfig(Jdbcproperties prop){ this.prop = prop; } - @Bean public Datasource dataSource(JdbcProperties prop){ // ...
当然还有更加优雅的注入方式,如果一段属性只有一个类需要使用,我们不用将这一段属性装载到属性中供消费,
而是直接在需要的地方申明即可:如下所示
@Bean
// 声明要注入的属性前缀,SpringBoot会自动把相关属性通过set方法注入到DataSource中
@ConfigurationProperties(prefix = "jdbc")
public DataSource dataSource() {
DruidDataSource dataSource = new DruidDataSource();
return dataSource;
}
自动配置的原理
约定大于配置原则
1:@SpringBootConfiguration,申明当前类为SpringBoot配置类
@SpringBootApplication 2:@EnableConfiguration,默认配置是否生效,取决于我们引入的依赖
3:@ComponentScan,开启注解扫描,扫描对象为启动类所在的包机器子包
通过@SpringBootApplication这个注解了一个大概,@EnableConfiguration就是自动配置的关键所在
在我们的项目中,SpringBoot已经为我们提供了默认的配置,通过我们引入的依赖决定是否生效,如果我们不想使用默认配置,我们可以Application.properties/yml中自定义值进行覆盖默认值
-
是SpringBoot提供的对应用系统监控的集成功能,可以对系统进行配置查看,相关功能统计等,在Spring Cloud中,主要完成微服务的监控,可以查看微服务之间的数据处理和调用,当出现异常时,可以快速定位问题所在
-
其功能和Dubbo的监控中心类似,区别就是一个需要专门部署,而这个是存在每一个Boot工程中的
<!--SpringBoot的 Actuator-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
application.properties
server.port=8888
#actuator端口
management.server.port=9001
#修改访问路径 2.0之前默认是/ 2.0默认是 /actuator 可以通过这个属性值修改
management.endpoints.web.base-path=/monitor
#开放所有页面节点 默认只开启了health、info两个节点
management.endpoints.web.exposure.include=*
#显示健康具体信息 默认不会显示详细信息
management.endpoint.health.show-details=always
#自定义info信息
info.company.username=chen
info.company.age=23
info.company.address=成都市动物园附近
#从pom文件中读取信息
[email protected]@
[email protected]@
[email protected]@
[email protected]@
然后我们启动项目,准备访问 :http://localhost:9001/monitor/health
对,这个不是我们想看到的页面,有点晚了,明天还上班,明天补上
以上是关于逆水行舟 —— SpringBoot的主要内容,如果未能解决你的问题,请参考以下文章
全栈编程系列SpringBoot整合Shiro(含KickoutSessionControlFilter并发在线人数控制以及不生效问题配置启动异常No SecurityManager...)(代码片段
SpringBoot中表单提交报错“Content type ‘application/x-www-form-urlencoded;charset=UTF-8‘ not supported“(代码片段
Spring boot:thymeleaf 没有正确渲染片段