Spring Boot基本配置


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

基本配置

入口類和@SpringBootApplication

  Spring Boot通常有一個名為*Application的入口類,且入口類有一個main方法,這個main方法就是標志的java應用入口方法。調用main方法就可以啟動springboot應用。

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

  涉及到啟動Springboot項目的核心注解:@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan。

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

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

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

  注:SpringBoot會自動掃描@SpringBootApplication所在類的同級包以及下級包里的Bean(若為JPA還會掃描@Entity)。所以一般入口類都會放在包的根目錄下。

關閉特定的自動配置

  通過@SpringBootApplication注解的參數exclude參數實現:

@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即可。

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

 

 

本文內容是書中內容兼具自己的個人看法所成。可能在個人看法上會有諸多問題(畢竟知識量有限,導致認知也有限),如果讀者覺得有問題請大膽提出,我們可以相互交流、相互學習,歡迎你們的到來,心成意足,等待您的評價。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM