什么是springboot
Spring Boot是一个便捷搭建 基于spring工程的脚手架;作用是帮助各位大猿快速搭建大型的spring 项目。简化工程的配置,依赖管理;实现开发人员把时间都集中在业务开发上。
springboot 的重要特点
下面给出从官网描述的特点
- Create stand-alone Spring applications
- Embed Tomcat, Jetty or Undertow directly (no need to deploy WAR files)
- Provide opinionated ‘starter’ dependencies to simplify your build configuration
- Automatically configure Spring and 3rd party libraries whenever possible
- Provide production-ready features such as metrics, health checks, and externalized configuration
- Absolutely no code generation and no requirement for XML configuration
英文不好的各位大猿建议恶补一下英语,不然在成就在猿这一途的修行成就注定有限。
springboot 的应用
在spring官网上有快速入门的案例,可以瞅瞅如何快速入门
然后就参照 springboot快速上手案例即可。
本小结重点论述如何在maven 工程中快速建立springboot项目
采用maven快速构建springboot 项目
导入依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <artifactId>spring-boot-starter-parent</artifactId> <groupId>org.springframework.boot</groupId> <version>2.3.0.RELEASE</version> </parent> <groupId>org.example</groupId> <artifactId>springboot</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> <!-- <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </build>-->
</project>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
编写启动引导类
@SpringBootApplication
public class Application { public static void main(String[] args) { SpringApplication.run(Application.class,args); }
}
- 1
- 2
- 3
- 4
- 5
- 6
编写controller
@RestController
@RequestMapping("/userController")
public class UserController { @RequestMapping("/helloPython") public String helloPython(){ return "hi python and java"; }
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
注意启动引导类的位置所在,最好的结构模式如下:
也可以指定包扫描,但本小结先不进行探讨了。
spring配置的历史
事实上,在Spring3.0开始,Spring官方就已经开始推荐使用java配置来代替传统的xml配置了,我们不妨来回顾一下
Spring的历史:
Spring1.0时代:
在此时因为jdk1.5刚刚出来,注解开发并未盛行,因此一切Spring配置都是xml格式,感觉非常的爽歪歪。
Spring2.0时代:
Spring引入了注解开发,但是因为并不完善,因此并未完全替代xml,此时的猿友们往往是把xml与注解进行结合,在小猿前面学习web项目的时候也都是如此。
Spring3.0及以后
3.0以后Spring的注解已经非常完善了,因此Spring推荐大家使用完全的java配置来代替以前的xml,不过似乎在国内并未推广盛行。只有当Spring Boot来临,各位猿才慢慢认识java配置的优雅。
java bean配置案例
在配置项配置到类中
通用配置方法
小猿记得在以前的文章中提到过,若想观看请查看小猿的这篇文章请查看Spring 温习笔记(二)Spring与注解,但本章中小猿继续复习注解配置,首先引入properties文件
jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test
jdbc.username=root
jdbc.password=root
- 1
- 2
- 3
- 4
编制数据源类
@Configuration
@PropertySource("classpath:jdbc.properties")
public class JDBCConfig { @Value("${jdbc.url}") private String url; @Value("${jdbc.driverClassName}") private String driverClassName; @Value("${jdbc.username}") private String username; @Value("${jdbc.password}") private String password; @Bean public DataSource getDataSource(){ DruidDataSource ds = new DruidDataSource(); ds.setDriverClassName(driverClassName); ds.setUrl(url); ds.setPassword(password); ds.setUsername(username); return ds; }
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
springboot 的属性注入
属性文件的名称有变化,默认的文件名必须是:application.properties或application.yml
在上面的案例中,我们实验了java配置方式。不过属性注入使用的是@Value注解。这种方式虽然可行,但是不够强大,因为它只能注入基本类型值。在Spring Boot中,提供了一种新的属性注入方式,支持各种java基本数据类型及复杂类型的注入。
@ConfigurationProperties(prefix = "jdbc")
public class JDBCProperties { private String url; private String driverClassName; private String username; private String password; public JDBCProperties() { } public JDBCProperties(String url, String driverClassName, String username, String password) { this.url = url; this.driverClassName = driverClassName; this.username = username; this.password = password; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getDriverClassName() { return driverClassName; } public void setDriverClassName(String driverClassName) { this.driverClassName = driverClassName; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "JDBCProperties{" + "url='" + url + '\'' + ", driverClassName='" + driverClassName + '\'' + ", username='" + username + '\'' + ", password='" + password + '\'' + '}'; }
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
这注入的时候可能会报错
需要引入一个jar包。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional>
</dependency>
- 1
- 2
- 3
- 4
- 5
在类上通过@ConfigurationProperties注解声明当前类为属性读取类prefix=“jdbc” 读取属性文件中,前缀为jdbc的值。在类上定义各个属性,名称必须与属性文件中 jdbc. 后面部分一致需要注意的是,这里我们并没有指定属性文件的地址,所以我们需要把jdbc.properties名称改为application.properties,这是Spring Boot默认读取的属性文件名
修改数据源获取类
@Configuration
/*@PropertySource("classpath:jdbc.properties")*/
@EnableConfigurationProperties(JDBCProperties.class)
public class JDBCConfig { /* @Value("${jdbc.url}") private String url; @Value("${jdbc.driverClassName}") private String driverClassName; @Value("${jdbc.username}") private String username; @Value("${jdbc.password}") private String password; @Bean public DataSource getDataSource(){ DruidDataSource ds = new DruidDataSource(); ds.setDriverClassName(driverClassName); ds.setUrl(url); ds.setPassword(password); ds.setUsername(username); return ds; }*/ @Bean public DataSource getDataSource(JDBCProperties jdbcProperties){ DruidDataSource ds = new DruidDataSource(); ds.setDriverClassName(jdbcProperties.getDriverClassName()); ds.setUrl(jdbcProperties.getUrl()); ds.setPassword(jdbcProperties.getPassword()); ds.setUsername(jdbcProperties.getPassword()); return ds; }
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
优势:
从操作过程上来看,注入的这种方式似乎比传统java配置文件注入更加复杂繁琐。但从Relaxed binding:松散绑定不严格要求属性文件中的属性名与成员变量名一致。支持驼峰,中划线,下划线等等转换,甚至支持对象引导。比如:user.friend.name:代表的是user对象中的friend属性中的name属性,显然friend也是对象。@value注解就难以完成这样的注入方式。meta-data support:元数据支持,帮助IDE生成属性提示(写开源框架会用到),所以用springboot 的属性注入方式好处还是多多。
在方法中设定配置项
springboot 更简介化的注入
上述我们已经完成了比较松散绑定的属性注入方式,而springboot给我们提供更加简洁的,更加优雅的注入方式,事实上,如果一段属性只有一个Bean需要使用,我们无需将其注入到一个类(JdbcProperties,将该类上的所有注解去掉)中。而是直接在需要的地方声明即可;再次修改 JdbcConfig类为如下代码:
@Configuration
public class JDBCConfig1 { @Bean @ConfigurationProperties(prefix = "jdbc") public DataSource getDataSource(){ return new DruidDataSource(); }
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
springboot配置文件
在javaweb项目中常用的配置文件种类较多,如xml,properties,yaml,
在springboot 中一般使用yaml 或yml来主流配置文件来进行一些文件的配置,本小结就探讨如何采用yml文件来实现springboot 项目的配置。
yml配置文件的特征
- 树状层级结构展示配置。
- 配置项之间有关系则分行空两格。
- 配置项有值,则需要写: 之后空格再写值。
多个yml配置文件
当有多个yml配置文件;在spring boot中是被允许的。这些配置文件的名称必须为application-***.yml,并且这些配置文件必须要在application.yml配置文件中激活之后才可以使用。
application-app
feitian:
app: xueshanfeitian.app
- 1
- 2
application-def
feitian:
url: www.feitian.com
- 1
- 2
在application.yml需要激活这个配置文件
### active files
spring:
profiles: active: def,app
- 1
- 2
- 3
- 4
在controller中需要用@Value注解来使用
yml文件与properties文件的优先级
如果 properties和yml配置文件同时存在在spring boot项目中;那么这两类配置文件都有效。在两个配置文件中如果存在同名的配置项的话会以properties文件的为主。
springboot 自动装配置流程
查看配置文件
查看一个典型的注解
自动装配后如何加入个性化配合呢
其奥妙就在于如何进行对原有默认配置进行覆盖,如
如何修改springMVC配置文件。
小猿的本小结内容就到此为止吧。
文章来源: blog.csdn.net,作者:xueshanfeitian,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/xueshanfeitian/article/details/114554477