Spring Boot概述
什么是Spring Boot
Spring Boot 是由 Pivotal 團隊提供的全新框架贫堰,其設計目的是用來簡化新 Spring 應用的初始搭建以及開發(fā)過程。該框架使用了特定的方式來進行配置诅需,從而使開發(fā)人員不再需要定義樣板化的配置顺少。簡單的來說 Spring Boot 這個項目整合目前很多的流行的第三方框架,并且做了一系列的默認配置,我們無需在進行手動配置,直接拿過來直接使用! 比如我們要使用 Spring mvc 開發(fā) web 應用,那么我們可能需要經過以下幾步
- 導入 spring mvc 的相關依賴包
- 在 web.xml 文件中配置 Spring mvc 的前端控制器
- 創(chuàng)建一個 spring mvc 的配置文件
- 在 spring mvc 的配置文件中進行相關配置
- 配置注解掃描路徑
- 配置處理器映射器
- 配置處理器適配器
- 配置視圖解析器
- 開發(fā) Controller
那么現在如果我們使用 Spring Boot 開發(fā)我們的 web 應用,那么具體的步驟如下:
- 導入相關的依賴包
- 開發(fā) Controller
單單從開發(fā)步驟上講都比我們的原始開發(fā)少了很多,其中的配置部分 Spring Boot 幫我們完成了,不需要我們在進行配置,當然如果我們想
更改 Spring Boot 的默認配置也是可以的.極大的簡化了我們的開發(fā).
Spring Boot 的核心功能
- 獨立運行的 spring 項目: Spring Boot 可以以 jar 包形式直接運行抖部,如 java -jar xxx.jar 優(yōu)點是:節(jié)省服務器資源
- 內嵌 servlet 容器: Spring Boot 可以選擇內嵌 Tomcat淫痰,Jetty把介,這樣我們無須以 war 包形式部署項目暑刃。
- 提供 starter 簡化 Maven 配置: 在 Spring Boot 項目中為我們提供了很多的 spring-boot-starter-xxx 的項目(我們把這個依賴可以稱之為
起步依賴),我們導入指定的這些項目的坐標,就會自動導入和該模塊相關的依賴包:
例如我們后期再使用 Spring Boot 進行 web 開發(fā)我們就需要導入 spring-boot-starter-web 這個項目的依賴,導入這個依賴以后!那么
Spring Boot 就會自動導入 web 開發(fā)所需要的其他的依賴包,如下圖所示:
- 自動配置 spring: Spring Boot 會根據在類路徑中的 jar 包厢漩,類,為 jar 包里的類自動配置 Bean岩臣,這樣會極大減少我們要使用的配置溜嗜。
當然 Spring Boot 只考慮了大部分開發(fā)場景,并不是所有的場景架谎,如果在實際的開發(fā)中我們需要自動配置 Bean炸宵,而 Spring Boot 不
能滿足,則可以自定義自動配置谷扣。 - 準生產的應用監(jiān)控: Spring Boot 提供基于 http土全,ssh捎琐,telnet 對運行時的項目進行監(jiān)控
- 無代碼生成和 xml 配置: Spring Boot 大量使用 spring4.x 提供的注解新特性來實現無代碼生成和 xml 配置。spring4.x 提倡使用 Java
配置和注解配置組合裹匙,而 Spring Boot 不需要任何 xml 配置即可實現 spring 的所有配置瑞凑。
Spring Boot 的優(yōu)點和缺點
優(yōu)點
- 快速構建項目
- 對主流框架無縫集成
- 項目可以獨立運行,無需依賴外部 servlet 容器
- 提供運行時的應用監(jiān)控
- 極大提高了開發(fā)概页,部署效率
缺點
- 資料相對比較少
- 版本迭代較快
Spring Boot 入門案例
使用 Spring Boot 開發(fā) web 應用
在 pom.xml 添加依賴
在 pom.xml 文件我們需要添加兩部分的依賴:
- 讓我們的項目繼承 spring-boot-starter-parent 的工程
- 加入 spring-boot-starter-web 的依賴
<!-- 添加父工程 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>
<dependencies>
<!-- 加入web開發(fā)的支持 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
Spring Boot 項目默認的編譯版本是 1.6,如果我們想使用 1.7 的編譯版本我們就需要在 pom.xml 文件中定義一個變量
<!-- 定義變量 -->
<properties>
<java.version>1.7</java.version>
</properties>
新建controller
HelloController.java
package com.itheima.springboot.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class HelloController {
@RequestMapping("/hello")
@ResponseBody
public String hello() {
return "hello springboot";
}
}
新建啟動類
package com.itheima.springboot.controller;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//設置springboot啟動類
@SpringBootApplication
public class HelloSpringBootApplication {
public static void main(String[] args) {
//啟動應用
SpringApplication.run(HelloSpringBootApplication.class, args);
}
}
訪問
localhost:8080/hello
以jar包方式運行
pom.xml
<build>
<plugins>
<!-- Spring Boot的maven插件 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
maven-run-build...-輸入命令:package籽御,以命令行運行jar
Spring Boot核心
無 xml 配置的實現
自從 spring3.0 以后 spring 提供了很多的注解來替代 xml 文件的配置.最為核心的是下面的兩個注解:
- @Configuration 標注該類是一個配置類.類似于我們定義的 applicationContext.xml
- @Bean 類似于我們在之前的 spring 配置文件中配置的<bean id=”” class=””/>
有了上面的兩個注解我們就可以使用編碼的方式來完成 spring 的相關配置,接下來我們就來使用 java 編碼的方式來完成 spring 的配置
入門Demo
- 導入相關依賴
pom.xml
<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>
<groupId>com.itheima</groupId>
<artifactId>itheima-javaconfig</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<spring.version>4.3.7.RELEASE</spring.version>
</properties>
<dependencies>
<!-- Spring依賴包 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<!-- maven的編譯插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
</plugin>
</plugins>
</build>
</project>
HelloService.java
package com.itheima.javaconfig.service;
public class HelloService {
public String sayHello(){
return "Hello JavaConfig";
}
}
配置類ApplicationConfiguration.java
package com.itheima.javaconfig.service;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration //相當于我們定義了一個applicationContext.xml文件
public class ApplicationConfiguration {
@Bean // 相當于我們在配置文件中定義了一個bean
public HelloService helloService() {
return new HelloService() ;
}
}
測試類JavaConfigTest.java
package com.itheima.javaconfig.service;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class JavaConfigTest {
public static void main(String[] args) {
// 通過AnnotationConfigApplicationContext這個類獲取Spring容器
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(ApplicationConfiguration.class);
//從spring容器獲取bean
HelloService helloService = applicationContext.getBean(HelloService.class);
//調用sayHello方法
String result = helloService.sayHello() ;
System.out.println(result);
}
}
練習(配置 JdbcTemplate)
需求使用 JdbcTemplate 查詢所有的用戶數據
導入 user.sql 腳本文件
pom.xml
<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>
<groupId>com.itheima</groupId>
<artifactId>itheima-javaconfig-jdbctemplate</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<druid.version>1.1.6</druid.version>
<mysql.version>5.1.44</mysql.version>
<spring.version>4.3.7.RELEASE</spring.version>
</properties>
<dependencies>
<!-- 加入spring-jdbc的依賴包 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- 加入druid的數據源 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid.version}</version>
</dependency>
<!-- 加入mysql的驅動 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<!-- Spring依賴包 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<!-- maven的編譯插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
</plugin>
</plugins>
</build>
</project>
創(chuàng)建javabean
User.java
package com.itheima.javaconfig.domain;
public class User {
private Integer id ; // 唯一標識
private String userName ; // 用戶名
private String sex ; // 性別
private String address ; // 住址
/**
* @return id
*/
public Integer getId() {
return id;
}
/**
* @return userName
*/
public String getUserName() {
return userName;
}
/**
* @return sex
*/
public String getSex() {
return sex;
}
/**
* @return address
*/
public String getAddress() {
return address;
}
/**
* @param id 要設置的 id
*/
public void setId(Integer id) {
this.id = id;
}
/**
* @param userName 要設置的 userName
*/
public void setUserName(String userName) {
this.userName = userName;
}
/**
* @param sex 要設置的 sex
*/
public void setSex(String sex) {
this.sex = sex;
}
/**
* @param address 要設置的 address
*/
public void setAddress(String address) {
this.address = address;
}
/* (非 Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return "User [id=" + id + ", userName=" + userName + ", sex=" + sex + ", address=" + address + "]";
}
public User(Integer id, String userName, String sex, String address) {
super();
this.id = id;
this.userName = userName;
this.sex = sex;
this.address = address;
}
public User() {
super();
// TODO 自動生成的構造函數存根
}
}
db.properties
jdbcDriverClassName=com.mysql.jdbc.Driver
jdbcUrl=jdbc:mysql://localhost:3306/spring-boot
jdbcUserName=root
jdbcPassword=suntong
編寫配置類
JdbcTemplateConfiguration.java
package com.itheima.javaconfig;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.jdbc.core.JdbcTemplate;
import com.alibaba.druid.pool.DruidDataSource;
@Configuration
@PropertySource("classpath:db.properties")
public class JdbcTemplateConfiguration {
@Value("${jdbcDriverClassName}")
private String driverClassName;
@Value("${jdbcUrl}")
private String jdbcUrl;
@Value("${jdbcUserName}")
private String jdbcUserName;
@Value("${jdbcPassword}")
private String jdbcPassword;
/**
* 配置數據源
*
* @return
*/
@Bean
public DataSource dataSource() {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(driverClassName);
dataSource.setUrl(jdbcUrl);
dataSource.setUsername(jdbcUserName);
dataSource.setPassword(jdbcPassword);
return dataSource;
}
@Bean
public JdbcTemplate jdbcTemplate(DataSource dataSource) {
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
return jdbcTemplate;
}
}
編寫測試類
JdbcTemplateJavaConfigTest.java
package com.itheima.javaconfig;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import com.itheima.javaconfig.domain.User;
public class JdbcTemplateJavaConfigTest {
public static void main(String[] args) {
// 獲取spring容器
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(JdbcTemplateConfiguration.class);
// 獲取JdbcTemplate
JdbcTemplate jdbcTemplate = applicationContext.getBean(JdbcTemplate.class);
// 進行查詢
List<User> users = jdbcTemplate.query("select * from user", new RowMapper<User>(){
@Override
public User mapRow(ResultSet rs, int rowNum) throws SQLException {
//創(chuàng)建User對象
User user = new User();
user.setId(rs.getInt("id"));
user.setUserName(rs.getString("username"));
user.setSex(rs.getString("sex"));
user.setAddress(rs.getString("address"));
return user;
}
}) ;
// 輸出
System.out.println(users);
}
}
以上就是通過spring3.0之后提供的注解方式實現無xml配置。
接下來看怎么實現的自動化配置惰匙。
自動化配置
編寫入門案例的時候我們使用的是 Spring mvc 作為我們的表現層框架,但是要使用 Spring mvc 我們就需要在web.xml 文件中配置 Spring mvc 的前端控制器(DispatcherServlet). 但是我們剛才在編寫入門案例的時候我們并沒有去做任何的配置.那么接下來我們就來講解一下 Spring Boot 中自動配置的原理.
入口類和@SpringBootApplication
Spring Boot 的項目一般都會有*Application 的入口類技掏,入口類中會有 main 方法,這是一個標準的 Java 應用程序的入口方法项鬼。Spring Boot會自動掃描@SpringBootApplication 所在類的同級包以及下級包中的 bean(如果是 jpa 項目還會自動掃描標注@Entity 的實體類)
@SpringBootApplication 注解是 Spring Boot 的核心注解
以上為該注解的源碼哑梳,在其中還有很多的注解,所以@SpringBootAplication稱為組合注解
組合注解作用就是簡化我們的注解使用: 我們在某一個類上使用了@SpringBootApplication
那么就相當于在該類上使用了該注解上定義的其他的三個注解
@SpringBootConfiguration(注意不是SpringBootApplication)
@SpringBootConfiguration 這是 Spring Boot 項目的配置注解秃臣,源碼如下:
這個注解也是一個組合注解, 在 Spring Boot 項目中推薦使用@ SpringBootConfiguration 替代@Configuration
@EnableAutoConfiguration
啟用自動配置涧衙,該注解會使 Spring Boot 根據項目中類路徑依賴的 jar 包自動配置項目的配置項:例如: 我們添加了 spring-boot-starter-web
依賴,會自動添加會自動添加 tomcat 和 springmvc 的依賴
那么 spring boot 項目會自動為我們配置 tomcat 和 springmvc; 具體體現在tomcat的配置使用的是8080 端口,Springmvc請求處理方式為 /
@ComponentScan
默認掃描@SpringBootApplication 所在類的同級目錄以及它的子目錄(所以之前的案例中把controller放到和啟動類同一個包下)
DispatcherServlet 自動配置分析
DispatcherServlet 自動配置源碼解析
入門案例中我們只是加入了 spring-boot-starter-web 這么一個依賴,就可以實現 DispatcherServlet 的相關配置,這是為什么呢?注意當我們加
入了 spring-boot-starter-web 的依賴以后,根據 maven 的依賴傳遞特性,會自動將一些依賴包加入到我們的項目中; 比如會自動添加 tomcat
和 springmvc 的依賴:
那么這些依賴包的確加入到了我們的項目中,那么怎么完成的自動配置呢? 因為在加入 spring-boot-starter-web 依賴的時候,會自動將另外
一個依賴加入進來: 這個依賴包就是
這個包中其實定義了很多技術點的自動配置
那么和我們 web 開發(fā)相關的自動配置類是在 web 包下,在這個 web 包中定義了很多的 xxxAutoConfiguration 這樣的類,這些類其實就是用
來完成自動配置的; 我們打開 DispatcherServletAutoConfiguration 看看
上面的是關于 DispatcherServletAutoConfiguration 的定義,通過源碼我們發(fā)現在這個類上定義了很多的好幾個注解:
- @AutoConfigureOrder: 這個注解自動配置的順序定義,取值為 int 的最小值,優(yōu)先級最高
- @Configuration: 這個表示該類是一個配置類,類似于我們定義了一個 applicationContext.xml 文件
- @ConditionalOnWebApplication: 這是一個條件注解,當前項目是 web 環(huán)境的條件下,啟動自動化配置
- @ ConditionalOnClass: 當前類路徑下有指定的類的條件下奥此,會啟用自動化配置
- @ AutoConfigureAfter: 定義該配置類的載入順序;該類上表示(后于 EmbeddedServletContainerAutoConfiguration)載入
其實看到這里我們就可以明白,Spring Boot 中的自動配置其實使用的就是這些條件注解來完成的,當滿足某一些添加以后就可以啟動自動配置弧哎,條件注解時核心注解
常見的條件注解
自定義自動配置
需求: 自定義自動配置類,完成 HelloService 的自動配置(itheima-spring-starter-hello)
pom.xml
<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>
<groupId>com.itheima</groupId>
<artifactId>itheima-autoconfig-helloservice</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<!-- 引入springboot自動配置的jar包 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
<version>1.5.9.RELEASE</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
HelloService.java
package com.itheima.autoconfig.service;
public class HelloService {
private final String DEFAULT_SAYWORD = "hello";
public String sayHello(String sayWord) {
if (sayWord != null && !sayWord.trim().equals("")) {
return sayWord;
}
return DEFAULT_SAYWORD;
}
}
編寫配置類
HelloServiceAutoConfig.java
package com.itheima.autoconfig.service;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@ConditionalOnClass(HelloService.class) //開啟自動配置,如果類路徑下有HelloService就啟動這個自動化配置
public class HelloServiceAutoConfig {
@Bean
@ConditionalOnMissingBean(HelloService.class) //當spring容器沒有HelloService的Bean時啟用配置
public HelloService helloService() {
return new HelloService();
}
}
注冊自動配置類
在 src/main/resources 目錄下創(chuàng)建一個: META-INF 這個文件夾,然后在該文件夾下創(chuàng)建一個文件: spring.factories; 內容如下
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\com.itheima.autoconfig.service.HelloServiceAutoConfig
Spring boot 項目在運行的時候會讀取這個配置文件中的自動配置,來完成自動配置
編寫測試工程
新建工程
pom.xml
<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>
<groupId>com.itheima</groupId>
<artifactId>itheima-autoconfig-test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!-- 定義變量 -->
<properties>
<java.version>1.8</java.version>
</properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>
<dependencies>
<!-- 導入spring-boot-starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!-- 導入spring boot 測試的依賴包 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- 加入itheima-autoconfig-helloservice依賴 -->
<dependency>
<groupId>com.itheima</groupId>
<artifactId>itheima-autoconfig-helloservice</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
測試類
AutoConfigApplication.java
package com.itheima.autoconfig;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import com.itheima.autoconfig.service.HelloService;
@SpringBootApplication
public class AutoConfigApplication {
public static void main(String[] args) {
//啟動項目,返回spring容器
ConfigurableApplicationContext applicationContext = SpringApplication.run(AutoConfigApplication.class, args);
//獲取bean
HelloService helloService = applicationContext.getBean(HelloService.class);
//調用
String sayHello = helloService.sayHello(null);
//輸出
System.out.println(sayHello);
}
}
JUnit測試
SpringBootAutoConfigTest.java
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.itheima.autoconfig.AutoConfigApplication;
import com.itheima.autoconfig.service.HelloService;
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = AutoConfigApplication.class)
public class SpringBootAutoConfigTest {
@Autowired
private HelloService helloService;
@Test
public void testAutoConfig() {
String sayHello = helloService.sayHello(null);
System.out.println(sayHello);
}
}
(注意在pom中配置的test依賴的scope是test,所以文件要放在test目錄下)
關閉自動配置
如果我們不需要 Spring Boot 自動配置稚虎,想關閉某一項的自動配置撤嫩,該如何設置呢?比如我們不想要 Spring Boot 為我們配置的
DispatcherServlet,如何完成呢?@SpringBootApplication(exclude = {DispatcherServletAutoConfiguration.class})
更改默認的配置
Spring Boot 使用一個全局的配置文件,這個全局配置文件為 application.properties 或者 application.yml; 放置在 src/main/resources 目錄下,
這個全局配置文件的作用是對一些默認配置的配置值進行修改
比如我們可以更改 tomcat 的端口號: server.port=8088
我們也可以更改 springmvc 的攔截規(guī)則: server.servlet-path=*.do
測試: http://localhost:8088/hello.do
更多的配置參見資料(Spring Boot 常用配置.docx)