1.Spring Boot核心

1.基本配置

1.1入口類

創(chuàng)建一個(gè)Spring Boot項(xiàng)目通常會(huì)生成一個(gè)帶有@SpringBootApplication啟動(dòng)類搜囱。該啟動(dòng)類里面有一個(gè)main方法盹靴。在方法中使用SpringApplication.run啟動(dòng)Spring Boot應(yīng)用項(xiàng)目惹骂。

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

Configuration

SpringBootApplication是Spring Boot的核心注解榜贴。它是一個(gè)組合注解鉴分。

/**
 * Indicates a {@link Configuration configuration} class that declares one or more
 * {@link Bean @Bean} methods and also triggers {@link EnableAutoConfiguration
 * auto-configuration} and {@link ComponentScan component scanning}. This is a convenience
 * annotation that is equivalent to declaring {@code @Configuration},
 * {@code @EnableAutoConfiguration} and {@code @ComponentScan}.
 *
 * @author Phillip Webb
 * @author Stephane Nicoll
 * @since 1.2.0
 */
@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 {
 //...
}

代碼注釋清晰的說(shuō)明劣砍,這個(gè)@SpringBootApplication相當(dāng)于在類上同時(shí)聲明
@Configuration惧蛹、@EnableAutoConfiguration、@ComponentScan

@EnableAutoConfiguration讓Spring Boot 根據(jù)類路徑中的jar包依賴為當(dāng)前項(xiàng)目進(jìn)行自動(dòng)配置刑枝,并且會(huì)自動(dòng)掃描入口類的同級(jí)包以及下級(jí)包中的Bean香嗓。eg:項(xiàng)目中添加org.springframework.boot:spring-boot-starter-web jar包,那么項(xiàng)目會(huì)自動(dòng)添加Tomcat和Spring MVC的依賴装畅。

建議@SpringBootApplication放置在groupId+arctifactId組合的包名下靠娱。

1.2 SpringBootApplication的重

  • exclued 排除特定的自動(dòng)配置類
/**
 * Exclude specific auto-configuration classes such that they will never be applied.
 * @return the classes to exclude
 */
@AliasFor(annotation = EnableAutoConfiguration.class, attribute = "exclude")
Class<?>[] exclude() default {};

1.4定制Banner

  • 一、修改banner

在項(xiàng)目的src/main/resources下新建一個(gè)banner.txt

  • 二掠兄、關(guān)閉banner

在main里的內(nèi)容修改為:

  • 1.使用SpringApplicationBuilder
new SpringApplicationBuilder(Application.class).bannerMode(Banner.Mode.OFF).run(args);

- 2.使用SpringApplication

SpringApplication springApplication = new SpringApplication();
springApplication.setBannerMode(Banner.Mode.OFF);
springApplication.run(args);
  • 3.在application.properties設(shè)置(推薦)
spring.main.banner-mode=off

1.5 Spring Boot的配置文件

Spring Boot使用一個(gè)全局的配置文件application.properties或application.yml像云。放置在src/main/resources目錄或者類路徑的/config下锌雀。(就是resources下的config文件)

Spring Boot的全局配置文件的作用是對(duì)一些默認(rèn)配置的配置值進(jìn)行修改。

  • 修改端口號(hào)及訪問(wèn)路徑
server.port=8010
server.context-path=/strivelearn

1.6 starter pom

Spring Boot為我們提供了簡(jiǎn)化企業(yè)級(jí)開發(fā)絕大多場(chǎng)景的starter pom,只要使用了應(yīng)用場(chǎng)景所需要的starter pom迅诬,相關(guān)的技術(shù)配置將會(huì)消失汤锨,就可以得到Spring Boot為我們提供的自動(dòng)配置的Bean。

這些starter pom 可以看官網(wǎng)文檔 13.1. Spring Boot application starters

1.7 使用xml配置

Spring Boot提倡零配置百框,即無(wú)xml配置闲礼,但是在實(shí)際項(xiàng)目中,可能有一些特殊要求你必須使用xml配置铐维,這時(shí)候我們可以通過(guò)Spring Boot提供的@ImportResource來(lái)加載xml配置

2.外部配置

Spring Boot 允許使用properties文件或者命令行參數(shù)作為外部配置柬泽。

2.1 命令行參數(shù)配置

Spring Boot可以基于jar包運(yùn)行的,打成 jar包的程序可以直接通過(guò)下面的命令運(yùn)行嫁蛇。

java -jar xx.jar

2.2 常規(guī)屬性配置

在Spring Boot 里锨并,我們只需要在application.properties定義屬性。直接使用@Value注入睬棚。

  • 在properties里面定義屬性
user.name=strivelearn
user.password=123456
  • 后臺(tái)代碼
@RestController
public class HomeController {

    @Value("${user.name}")
    private String username;

    @Value("${user.password}")
    private String password;

    @RequestMapping("index")
    public String index() {
        return "Hello World." + username + ";" + password;
    }
}

2.3類型安全的配置

如果這種配置很多的話第煮,使用@Value一個(gè)一個(gè)的注入會(huì)顯得格外麻煩∫值常可以使用@ConfigurationProperties將properties屬性和一個(gè)Bean及其屬性關(guān)聯(lián)包警,從而實(shí)現(xiàn)類型安全配置。

  • 1.創(chuàng)建pojo
@Component
@ConfigurationProperties(prefix = "usr")
public class UserProperties {
    private String name;

    private String password;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}
  • 代碼調(diào)用
@Autowired
private UserProperties userProperties;

@RequestMapping("index")
public String index() {
    //return "Hello World." + username + ";" + password;
    return userProperties.getName() + ";" + userProperties.getPassword();
}

通過(guò)@ConfigurationProperties加載properties文件內(nèi)的配置底靠,通過(guò)perfix屬性指定文件內(nèi)的配置害晦。也可以通過(guò)locations指定properties文件的位置。

3.日志配置

Spring Boot默認(rèn)使用Logback作為日至框架暑中。

配置日志文件

logging.file=log.log

配置日志級(jí)別

logging.level.org.springframework.web=debug

4.Profile配置

Profile是Spring用來(lái)針對(duì)不同的環(huán)境對(duì)不同的配置提供支持的壹瘟。全局Profile配置使用

appplication-{profile}.properties

通過(guò)在application.properties中設(shè)置

spring.profile.active=xx

來(lái)指定活動(dòng)的Profile。

application-qa.properties
application-stage.properties
application-prod.properties
spring.profile.active=qa

5.Spring Boot運(yùn)行原理

Spring Boot主要幫助我們解決了自動(dòng)配置的問(wèn)題鳄逾。而其源碼在spring-boot-autoconfigure-x jar中稻轨。

5.1查看當(dāng)前項(xiàng)目的啟動(dòng)日志

  • 1.運(yùn)行jar時(shí)增加 --debug參數(shù)

  • 2.在application.properties中設(shè)置屬性

debug=ture
  • 3.在啟動(dòng)設(shè)置的VM arguments設(shè)置參數(shù)
-Ddebug
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市雕凹,隨后出現(xiàn)的幾起案子殴俱,更是在濱河造成了極大的恐慌,老刑警劉巖请琳,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件粱挡,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡俄精,警方通過(guò)查閱死者的電腦和手機(jī)询筏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)竖慧,“玉大人嫌套,你說(shuō)我怎么就攤上這事逆屡。” “怎么了踱讨?”我有些...
    開封第一講書人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵魏蔗,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我痹筛,道長(zhǎng)莺治,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任帚稠,我火速辦了婚禮谣旁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘滋早。我一直安慰自己榄审,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開白布杆麸。 她就那樣靜靜地躺著搁进,像睡著了一般。 火紅的嫁衣襯著肌膚如雪昔头。 梳的紋絲不亂的頭發(fā)上饼问,一...
    開封第一講書人閱讀 52,262評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音减细,去河邊找鬼匆瓜。 笑死,一個(gè)胖子當(dāng)著我的面吹牛未蝌,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播茧妒,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼萧吠,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了桐筏?” 一聲冷哼從身側(cè)響起纸型,我...
    開封第一講書人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎梅忌,沒(méi)想到半個(gè)月后狰腌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡牧氮,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年琼腔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片踱葛。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡丹莲,死狀恐怖光坝,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情甥材,我是刑警寧澤盯另,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站洲赵,受9級(jí)特大地震影響鸳惯,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜叠萍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一悲敷、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧俭令,春花似錦后德、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至赫蛇,卻和暖如春绵患,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背悟耘。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工落蝙, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人暂幼。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓筏勒,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親旺嬉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子管行,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容