一后频、導航
本節(jié)內(nèi)容簡介:
1. spring boot 配置文件帝簇,使用@SpringBootApplication注解
2. spring boot 修改Java版本 和項目編碼
3. 一個標準的spring boot 代碼結(jié)構(gòu)
4. 查看當前項目自動配置了那些模塊
5. 禁用自動配置
6. 自定義banner及關(guān)閉banner
一、spring boot 配置文件残揉,使用@SpringBootApplication注解
spring boot 默認使用application.properties或者application.yml,放置在src/main/resources目錄或者類路徑的/config下抱环,一般建議就放在src/main/resources
這里我們使用application.properties來配置,這里我們試著修改下端口和訪問路徑
目錄結(jié)構(gòu)如下:
[圖片上傳失敗...(image-fb1bc8-1524582350472)]
配置代碼:
server.port=8081
server.context-path=/boot
編寫測試controller類
package com.likeoak.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 測試Controller
* The type Test controller.
*/
@RestController
public class TestController {
/**
* 返回 String 字符串眶痰,訪問成功竖伯,返回“test ok”
* Test string.
*
* @return the string
*/
@RequestMapping("/test")
public String test(){
return "test ok!";
}
}
啟動main方法因宇,及運行APP啟動類
package com.likeoak;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* 默認啟動類
*/
@SpringBootApplication
public class App
{
public static void main( String[] args )
{
SpringApplication.run(App.class,args);
}
}
訪問:http://localhost:8081/boot/test
結(jié)果:test ok!
代碼解釋:
@SpringBootApplication 解釋
先看下注解@SpringBootApplication的源碼
@SpringBootApplication的源碼
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = {
@Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {
里面包含@SpringBootConfiguration的源碼
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Configuration
public @interface SpringBootConfiguration {
總結(jié):@SpringBootApplication注解其實是@Configuration察滑,@EnableAutoConfiguration贺辰,@ComponentScan這三個注解組合
注解解釋
@Configuration 注解:標明該類使用Spring是基于java的配置
@EnableAutoConfiguration :開啟自動配置注解,有這個注解spring boot就會根據(jù)我們所引用的jar包來自動配置我們需要的配置莽鸭,這正是spring boot 魔力滓侍。
@ComponentScan:spring掃描注解撩笆,有這個注解spring boot 就會掃描(默認是以根路徑為準)所有的包,來加載所有的@Bean,所有這里的TestController 就是被掃描到的氮兵,我們就可以訪問了歹鱼。
二、spring boot 修改Java版本 和項目編碼
在使用spring bootde 過程中掺涛,想自定義java配置疼进,可以使用以下配置,加載到pom.xml中即可
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
</properties>
三、一個標準的spring boot 代碼結(jié)構(gòu)
一個典型的spring boot 項目結(jié)構(gòu)拣帽,這也是官網(wǎng)推薦的
com
+- example
+- myproject
+- Application.java
|
+- domain
| +- Customer.java
| +- CustomerRepository.java
|
+- service
| +- CustomerService.java
|
+- web
+- CustomerController.java
四减拭、 查看當前項目自動配置了那些模塊
查看當前項目有哪些自動配置拧粪,一共有三種方法
- 直接運行jar -jar xxx.jar --debug
- 在application中設(shè)置屬性
debug=true
-
直接在啟動的時候沧侥,增加啟動參數(shù)
idea 增加啟動參數(shù)--debug
我們可以選著任何一種正什,訪問結(jié)果如下
已啟動配置:
Positive matches:
-----------------
DispatcherServletAutoConfiguration matched:
- @ConditionalOnClass found required class 'org.springframework.web.servlet.DispatcherServlet'; @ConditionalOnMissingClass did not find unwanted class (OnClassCondition)
- @ConditionalOnWebApplication (required) found StandardServletEnvironment (OnWebApplicationCondition)
DispatcherServletAutoConfiguration.DispatcherServletConfiguration matched:
- @ConditionalOnClass found required class 'javax.servlet.ServletRegistration'; @ConditionalOnMissingClass did not find unwanted class (OnClassCondition)
- Default DispatcherServlet did not find dispatcher servlet beans (DispatcherServletAutoConfiguration.DefaultDispatcherServletCondition)
DispatcherServletAutoConfiguration.DispatcherServletRegistrationConfiguration matched:
- @ConditionalOnClass found required class 'javax.servlet.ServletRegistration'; @ConditionalOnMissingClass did not find unwanted class (OnClassCondition)
- DispatcherServlet Registration did not find servlet registration bean (DispatcherServletAutoConfiguration.DispatcherServletRegistrationCondition)
....
未自動配置:
Negative matches:
-----------------
ActiveMQAutoConfiguration:
Did not match:
- @ConditionalOnClass did not find required classes 'javax.jms.ConnectionFactory', 'org.apache.activemq.ActiveMQConnectionFactory' (OnClassCondition)
AopAutoConfiguration:
Did not match:
- @ConditionalOnClass did not find required classes 'org.aspectj.lang.annotation.Aspect', 'org.aspectj.lang.reflect.Advice' (OnClassCondition)
ArtemisAutoConfiguration:
Did not match:
- @ConditionalOnClass did not find required classes 'javax.jms.ConnectionFactory', 'org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory' (OnClassCondition)
BatchAutoConfiguration:
Did not match:
- @ConditionalOnClass did not find required classes 'org.springframework.batch.core.launch.JobLauncher', 'org.springframework.jdbc.core.JdbcOperations' (OnClassCondition)
...
五、 禁用自動配置
比如不想自動配置數(shù)據(jù)庫連接盾致,就可以用如何代碼來關(guān)掉自動配置
/**
* 測試關(guān)閉數(shù)據(jù)庫自動配置
* The type Data source config.
*/
@Configuration
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class})
public class DataSourceConfig {
}
六庭惜、自定義banner及關(guān)閉banner
自定義spring boot 默認啟動圖案步驟:
- 直接在src/main/resources下創(chuàng)建一個banner.txt
- 訪問網(wǎng)站http://patorjk.com/software/taag 生成字符护赊,這里我們用"yiqixuejava"(一起學java),將生成的字符復制到banner.txt中,啟動應(yīng)用即可
啟動結(jié)果:
.__ .__ __
___.__.|__| _____|__| ___ _____ __ ____ |__|____ ___ _______
< | || | / ____/ | \ \/ / | \_/ __ \ | \__ \\ \/ /\__ \
\___ || | < <_| | | > <| | /\ ___/ | |/ __ \\ / / __ \_
/ ____||__| \__ |__| /__/\_ \____/ \___ > /\__| (____ /\_/ (____ /
\/ |__| \/ \/ \______| \/ \/
后續(xù)會繼續(xù)推出這一系列spring boot的文章
本人網(wǎng)站:一起學JAVA
一起學習QQ群:581665151