Sprint Boot基础
1spring boot的作用
spring boot框架抛弃了繁琐的xml配置过程,采用大量的默认配置简化我们的开发过程。所以采用Spring boot可以非常容易和快速地创建基于Spring 框架的应用程序,它让编码变简单了,配置变简单了,部署变简单了,监控变简单了。
说的直白一些使用spring boot之后就不用像以前使用ssm的时候添加那么多配置文件了,spring boot除了支持ssm之外,还支持非常多的第三方技术。spring boot就像是一个百宝箱,你要用那些技术,直接告诉他就行了。在spring boot中写的代码跟以前一样,所以在学习的时候非常容易上手。
springboot的特点:
spring boot就相当于一个平台,把我们需要一些东西准备好了,我们在这个平台里面填充业务代码即可,即代码跟以前代码区别不大。
1、能够快速创建基于Spring的应用程序;
2、能够直接使用java main方法启动内嵌的Tomcat服务器运行Spring boot程序,不需要部署war包文件;
3、提供约定的starter POM来简化Maven配置,让Maven的配置变得简单;
4、根据项目的Maven依赖配置,Spring boot自动配置Spring、Spring mvc等;
5、提供了程序的健康检查等功能;
6、基本可以完全不使用XML配置文件,采用注解配置。
2 spring boot的配置
2.1 配置pom.xml
添加父工程坐标
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.RELEASE</version>
</parent>
2.2 添加web项目启动器
为了让SpringBoot帮我们完成各种自动配置,我们必须引入SpringBoot提供的自动配置依赖,我们称为启动器
。因为我们是web项目,这里我们引入web启动器:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
2.3 创建启动类
Spring Boot项目通过main函数即可启动,我们需要创建一个启动类:
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
SpringBoot到目前为止就已经配置好了,下面可以按ssm的开发方式来编写代码了。
3 java配置
在SpringBoot中我们不需要配置web.xml、springmvc.xml等配置文件了。但是我们如果对于一些必要的Bean配置,在SpringBoot中如何实现?
比如数据库连接池,我们可以采用java配置来代替xml配置:
首先引入Druid连接池依赖:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.6</version>
</dependency>
创建一个jdbc.properties文件,存放jdbc属性:
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/leyou
jdbc.username=root
jdbc.password=123
其次,创建配置文件类:
@Configuration
@PropertySource("classpath:jdbc.properties")
public class JdbcConfig {
@Value("${jdbc.url}")
String url;
@Value("${jdbc.driverClassName}")
String driverClassName;
@Value("${jdbc.username}")
String username;
@Value("${jdbc.password}")
String password;
@Bean
public DataSource dataSource() {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setUrl(url);
dataSource.setDriverClassName(driverClassName);
dataSource.setUsername(username);
dataSource.setPassword(password);
return dataSource;
}
}
我们用到的注解:
@Configuration
:声明我们JdbcConfig
是一个配置类@PropertySource
:指定属性文件的路径是:classpath:jdbc.properties
- 通过
@Value
为属性注入值 - 通过
@Bean
将dataSource()
方法声明为一个注册Bean的方法,Spring会自动调用该方法,将方法的返回值加入Spring容器中。
采用@Value属性注入比较麻烦,我们采用一种简单的属性注入方式:
直接在方法上面加入@ConfigurationProperties注解,springboot会自动调用DruidDataSource的set方法进行配置。注意:采用这种方式,属性配置文件名称必须修改成application.properties,因为springboot读取的默认配置文件名称就是application。
@Bean
@ConfigurationProperties(prefix = "jdbc")
public DataSource dataSource() {
DruidDataSource dataSource = new DruidDataSource();
return dataSource;
}
4、SpringBoot是如何实现自动配置的
使用SpringBoot之后,以前SpringMVC的WEB工程开发,那些繁杂的配置都消失不见了,这都是从我们的main函数来的,所以我们再次来看下启动类:
@SpringBootApplication
public class SpringBootDemo {
public static void main(String[] args) {
SpringApplication.run(SpringBootDemo.class, args);
}
}
我们发现特别的地方有两个:
- 注解:@SpringBootApplication
- run方法:SpringApplication.run()
@SpringBootApplication注解的作用:
通过@SpringBootApplication实现了3个功能
1、定义了这是一个配置类
2、开启了自动配置
3、扫描包
SpringBoot为我们提供了默认配置,而默认配置生效的条件一般有两个:
- 你引入了相关依赖
- 你自己没有配置
1)启动器
所以,我们如果不想配置,只需要引入依赖即可,而依赖版本我们也不用操心,因为只要引入了SpringBoot提供的stater(启动器),就会自动管理依赖及版本了。
因此,玩SpringBoot的第一件事情,就是找启动器,SpringBoot提供了大量的默认启动器,参考课前资料中提供的《SpringBoot启动器.txt》
2)全局配置
另外,SpringBoot的默认配置,都会读取默认属性,而这些属性可以通过自定义application.properties
文件来进行覆盖。这样虽然使用的还是默认配置,但是配置中的值改成了我们自定义的。
因此,玩SpringBoot的第二件事情,就是通过application.properties
来覆盖默认属性值,形成自定义配置。