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)學習
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使用一個全局的配置文件application.properties或application.yml,配置文件路徑:src/main/resource目錄下或類路徑下的/config下。
注:這兩種配置文件的區別是格式不一致,示例均採用.properties格式,但實際上之後的主流應該是以yml爲主的。
示例:
修改端口和與默認路徑:
server.port=9090
server.context-path=/helloboot。
Springboot爲咱們提供了簡化企業級開發絕大多數場景的starter pom。只要使用了所須要的starter pom,SpringBoot就會爲咱們提供自動裝配的Bean。
還有不少,具體的能夠看官方文檔,或者本身去書上看。
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); } }
若按照常規屬性進行注入,你會發現若是屢次複用會出現不少冗餘的代碼,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是Spring針對不一樣環境不一樣配置的支持。
格式爲:application-{profile}.properties。
只須要在application.properties中設置spring.profiles.active=prod來指定活動的profile便可。
注:這樣能夠實現測試環境、開發環境、線上環境分離。