一起學JAVA之《spring boot》03 - 開始spring boot基本配置及項目結(jié)構(gòu)

一、導航

本節(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

四、 查看當前項目自動配置了那些模塊

查看當前項目有哪些自動配置,一共有三種方法

  1. 直接運行jar -jar xxx.jar --debug
  2. 在application中設(shè)置屬性
debug=true
  1. 直接在啟動的時候,增加啟動參數(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 默認啟動圖案步驟:

  1. 直接在src/main/resources下創(chuàng)建一個banner.txt
  2. 訪問網(wǎng)站http://patorjk.com/software/taag 生成字符,這里我們用"yiqixuejava"(一起學java),將生成的字符復制到banner.txt中,啟動應(yīng)用即可

啟動結(jié)果:

        .__         .__                              __
 ___.__.|__|   _____|__| ___  _____ __   ____       |__|____ ___  _______
<   |  ||  |  / ____/  | \  \/  /  |  \_/ __ \      |  \__  \\  \/ /\__  \
 \___  ||  | < <_|  |  |  >    <|  |  /\  ___/      |  |/ __ \\   /  / __ \_
 / ____||__|  \__   |__| /__/\_ \____/  \___  > /\__|  (____  /\_/  (____  /
 \/              |__|          \/           \/  \______|    \/           \/


后續(xù)會繼續(xù)推出這一系列spring boot的文章

本人網(wǎng)站:一起學JAVA
一起學習QQ群:581665151

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容