Spring Boot基本配置

本文參考javaEE開發的顛覆者SpringBoot實戰初版

基本配置

入口類和@SpringBootApplication

  Spring Boot一般有一個名爲*Application的入口類,且入口類有一個main方法,這個main方法就是標誌的java應用入口方法。調用main方法就能夠啓動springboot應用。java

  @SpringBootApplication是springboot的核心註解,它是一個組合註解web

  涉及到啓動Springboot項目的核心註解:@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan。spring

  注:@EnableAutoConfiguration可讓SpringBoot根據類路徑中的jar包依賴爲當前項目進行配置。安全

    例如:添加了spring-boot-start-web依賴,就會自動添加Tomcat與SpringMVC依賴,且會對Tomcat和SpringMVC進行配置。springboot

       添加了spring-boot-start-data-jpa依賴,springboot就會進行JPA的相關配置。app

  注:SpringBoot會自動掃描@SpringBootApplication所在類的同級包以及下級包裏的Bean(若爲JPA還會掃描@Entity)。因此通常入口類都會放在包的根目錄下。
框架

關閉特定的自動配置

  經過@SpringBootApplication註解的參數exclude參數實現:spring-boot

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})

定值Banner

  (我的認爲這個有點惡趣味啊,哈哈。我仍是很喜歡默認的banner)學習

  1.修改banner測試

    在springboot啓動時會有默認的圖標:

    

  在src/main/resources下新建一個banner.txt

  能夠在http://patorjk.com/software/taag網站生成字符,我敲入的是memeda,而後將生成的字符複製給banner.txt。

  再啓動時就能夠實現改變:

    

  2.關閉banner

  (1)修改main中的代碼:

    注:這一段是與書中有出入的,書中使用的是app.setShowBanner(false)

    public static void main(String[] args) { SpringApplication app = new SpringApplication(LilinlearnApplication.class); app.setBannerMode(Banner.Mode.OFF); app.run(args); }

  (2)或使用fluent API修改成:

    public static void main(String[] args) { new SpringApplicationBuilder(LilinlearnApplication.class) .bannerMode(Banner.Mode.OFF) .run(args); }

SpringBoot配置文件

  SpringBoot使用一個全局的配置文件application.properties或application.yml,配置文件路徑:src/main/resource目錄下或類路徑下的/config下。

    注:這兩種配置文件的區別是格式不一致,示例均採用.properties格式,但實際上之後的主流應該是以yml爲主的。

  示例:

    修改端口和與默認路徑:

    server.port=9090

    server.context-path=/helloboot。

starter pom

  Springboot爲咱們提供了簡化企業級開發絕大多數場景的starter pom。只要使用了所須要的starter pom,SpringBoot就會爲咱們提供自動裝配的Bean。

  還有不少,具體的能夠看官方文檔,或者本身去書上看。

使用XML配置

  SpringBoot提倡零配置,即無XML配置,但實際上有些特殊的配置須要使用XML配置。咱們能夠經過Spring提供的@ImportResource來加載XML配置

@ImportResource({"classpath:some-context.xml","classpath:another-context.xml"})

 

外部配置

  SpringBoot可使用properties文件、yaml文件或者命令行參數做爲外部配置。

  命令行參數配置:

    SpringBoot能夠基於jar包運行,打成jar包的程序能夠直接經過下面的命令行運行,並修改Tomcat端口號:

java -jar xx.jar --server.port=9090

  常規屬性配置:

    只須要在application.properties中定義屬性,直接在類中使用@Value注入便可。

    (1)在application.properties中增長屬性:

      book.author=huyifei

      book.name=xueshanfeihu

    (2)在類中獲取:

@RestController @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) public class LilinlearnApplication { @Value("${book.author}") private String author; @Value("${book.name}") private String name; @Autowired private Author authora; @RequestMapping("/") public String index() { return "??????" + author + name + "    " + authora.getAge() + "  |  " + authora.getName(); } public static void main(String[] args) { new SpringApplicationBuilder(LilinlearnApplication.class) .bannerMode(Banner.Mode.OFF) .run(args); } }

  類型安全的配置(基於properties)

   若按照常規屬性進行注入,你會發現若是屢次複用會出現不少冗餘的代碼,SpringBoot就爲咱們提供了方法,使用@ConfigurationProperties將properties屬性和一個Bean及其屬性關聯,從而實現安全配置。

   在application.properties上添加:

    mail.name=eamil

    mial.age=18

   咱們也能夠新建一個properties文件,這時咱們須要使用@PropertiesSource將添加的文件的位置指定。

    注:這裏與書中內容不一樣,書中的@ConfigurationProperties的locations屬性並不存在(看了源碼確實沒有),多是由於SpringBoot的版本不一樣(書中1.3,如今使用的是1.5.9)    

@Component @PropertySource(value = "classpath:test.properties") @ConfigurationProperties(prefix = "mail") public class Author { private String name; private String age; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } }

  日誌配置

    默認狀況下,SpringBoot使用Logback做爲日誌框架。

    配置日誌級別:

      logging.file=D:/mylog/log.log

    配置日誌文件,格式爲logging.level.包名=級別:

      logging.level.org.springframework.web=DEBUG

  Profile配置

    Profile是Spring針對不一樣環境不一樣配置的支持。

    格式爲:application-{profile}.properties。

    只須要在application.properties中設置spring.profiles.active=prod來指定活動的profile便可。

    注:這樣能夠實現測試環境、開發環境、線上環境分離。

 

 

本文內容是書中內容兼具本身的我的見解所成。可能在我的見解上會有諸多問題(畢竟知識量有限,致使認知也有限),若是讀者以爲有問題請大膽提出,咱們能夠相互交流、相互學習,歡迎大家的到來,心成意足,等待您的評價。

相關文章
相關標籤/搜索