HelloWorld應(yīng)用程序
- 給maven的settings.xml配置文件的profiles標(biāo)簽添加
<profile>
<id>jdk‐1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
- 在maven中添加sprig boot相關(guān)依賴
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
- 編寫一個(gè)主程序盐碱,啟動(dòng)spring boot應(yīng)用
package com.zhaoyi.hello;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class HelloWorldApplication {
public static void main(String[] args){
SpringApplication.run(HelloWorldApplication.class, args);
}
}
程序探究
1丹诀、POM文件
1 父項(xiàng)目
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>]
父項(xiàng)目才真正的管理Spring Boot應(yīng)用里面的所有依賴版本。
Spring boot的版本仲裁中心:
以后我們導(dǎo)入依賴默認(rèn)是不需要寫版本(沒有在dependency里面管理的依賴自然需要聲明版本號(hào))
2、導(dǎo)入的依賴
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
1钢颂、啟動(dòng)器
spring-boot-starter: spring-boot場(chǎng)景啟動(dòng)器厅缺;如spring-boot-starter-web則幫我們導(dǎo)入了web模塊需要正常運(yùn)行所依賴的組件重抖。
參照官方文檔我們可以發(fā)現(xiàn)棒妨,spring-boot-starter-*代表了一系列的功能場(chǎng)景踪古,當(dāng)你需要什么具體業(yè)務(wù)需求的時(shí)候含长,將其導(dǎo)入就可以了券腔,比如aop、data-redis拘泞、mail纷纫、web等。他將所有的功能場(chǎng)景都抽出來(lái)陪腌,做成一個(gè)個(gè)的starter(啟動(dòng)器)辱魁,其先關(guān)的業(yè)務(wù)場(chǎng)景的所有依賴都會(huì)導(dǎo)入進(jìn)來(lái),要用什么功能就導(dǎo)入什么場(chǎng)景的啟動(dòng)器诗鸭。
2染簇、主程序類
package com.zhaoyi.hello;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class HelloWorldApplication {
public static void main(String[] args){
SpringApplication.run(HelloWorldApplication.class, args);
}
}
@SpringBootApplication SB應(yīng)用標(biāo)注在某個(gè)類上說(shuō)明這個(gè)類是SB的主配置類,SB就應(yīng)該運(yùn)行這個(gè)類的main方法來(lái)啟動(dòng)SB應(yīng)用强岸。
@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 SB的配置類锻弓;
標(biāo)注在某個(gè)類上,表示這個(gè)類是SB的配置類蝌箍。
@Configuration 配置類上來(lái)標(biāo)注這個(gè)注解青灼;
配置類就是配置文件暴心;配置類也是容器中的一個(gè)組件;@companent
@EnableAutoConfiguration 開啟自動(dòng)配置功能杂拨;
以前我們需要在SP中配置的東西专普,SB幫我們自動(dòng)配置,通過(guò)此配置告訴SB開啟自動(dòng)配置功能弹沽。這樣檀夹,自動(dòng)配置的功能才能生效。
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import({EnableAutoConfigurationImportSelector.class})
public @interface EnableAutoConfiguration {
String ENABLED_OVERRIDE_PROPERTY = "spring.boot.enableautoconfiguration";
Class<?>[] exclude() default {};
String[] excludeName() default {};
}
@AutoConfigurationPackage 自動(dòng)配置包
SP的底層注解@import策橘,給容器中導(dǎo)入一個(gè)組件击胜。
將主配置類(@SpringBottApplication標(biāo)注的類)所在包及下面所有子包里面的所有組件掃描到SP容器。
@Import({EnableAutoConfigurationImportSelector.class}) 導(dǎo)入哪些組件的選擇器役纹;將所有需要導(dǎo)入的組件以全類名的方式返回偶摔,這些組件就會(huì)被添加到容器中;
會(huì)給容器中導(dǎo)入非常多的自動(dòng)配置類(xxxAutoConfiguration);就是給容器中導(dǎo)入這個(gè)場(chǎng)景需要的所有組件促脉,并配置好這些組件辰斋。這樣就免去了我們手動(dòng)編寫配置注入功能組件等的工作;
SB在啟動(dòng)的時(shí)候從類路徑下的META-INFO/spring.factories中獲取EnableAutoConfiguration指定的值瘸味,將這些紙作為自動(dòng)配置類導(dǎo)入容器中宫仗,自動(dòng)配置類就生效,幫我們進(jìn)行自動(dòng)配置工作旁仿;以前我們需要自己配置的東西藕夫,自動(dòng)配置類都幫我們做了。
J2EE的整體解決方案和自動(dòng)配置都在sprig-boot-autoconfigure.jar中了枯冈;
使用Spring Initializer快速創(chuàng)建SB項(xiàng)目
IDE都支持使用Spring的項(xiàng)目創(chuàng)建向?qū)В?br> 選擇我們需要的模塊毅贮,向?qū)?huì)聯(lián)網(wǎng)創(chuàng)建SB項(xiàng)目;
@ResponseBody 這個(gè)類的所有方法(或者單個(gè)方法——)返回的數(shù)據(jù)直接寫給瀏覽器尘奏。
@ResponseBody寫在類上面時(shí)滩褥,大可以寫為@RestController,其等價(jià)于@ResponseBody+@Controller;
默認(rèn)生成的項(xiàng)目
- 主程序已經(jīng)生成好了炫加,我們只需關(guān)注自己的業(yè)務(wù)邏輯
- resounces文件夾中的目錄結(jié)構(gòu)
- static:保存所有的靜態(tài)資源:js css images瑰煎;
- templates:保存所有的模板頁(yè)面;(SB默認(rèn)jar包俗孝,使用嵌入式頁(yè)面酒甸;可以使用模板引擎——freemarker、thymeleaf)
- application.properties SB應(yīng)用的配置文件赋铝;SB的一些默認(rèn)配置可以在這里進(jìn)行修改插勤。