[toc]java
java -jar xxx.jar
就能夠成功運行項目,<properties> <java.version>1.8</java.version> </properties>
<properties> <project.build.sourceEncoding>GBK</project.build.sourceEncoding> </properties>
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-releasetrain</artifactId> <version>Fowler-SR2</version> <scope>import</scope> <type>pom</type> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.1.3.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
spring boot 的web應用開發必須使用spring-boot-starter-web,其默認嵌入的servlet容器是Tomcat。spring
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.4.3.RELEASE</version> </parent> <dependencies> <!-- TOMCAT --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
嵌入的servlet容器版本在pom的如下父依賴項中定義,好比上面的version1.4.3引入了Tomcat版本8.5.6。 若是想改變tomcat版本,也能夠更改pom.xml或application.properties文件中的屬性進行修改apache
<properties> <tomcat.version>8.5.6</tomcat.version></properties> </properties>
<dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-core</artifactId> <version>${tomcat.version}</version> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-el</artifactId> <version>${tomcat.version}</version> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-websocket</artifactId> <version>${tomcat.version}</version> </dependency>
若是想使用其它servlet容器,則須要先移除tomcat容器編程
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency>
將默認的嵌入式容器tomcat切換至jetty設計模式
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jetty</artifactId> </dependency>
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-undertow</artifactId> </dependency>
官網提出激活自動化裝配須要將註解@EnableAutoConfiguration 和 @SpringBootApplicaion,將二者選其一標註在@Configuration類上,@Configuration聲明被標註爲配置類tomcat
@SpringBootApplicaion是一個聚合註解,相似的還有@RestController等 @SpringBootApplicaion被用於激活@EnableAutoConfiguration、@ComponentScan、@Configuration三個註解的特性,能夠理解爲前者等同包含於三個後者:springboot
其中@SpringBootConfiguration屬於@Configuration的派生註解 @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan public @interface SpringBootApplicaion{ ... }
@AlisaFor註解可以將一個或多個註解的屬性‘別名’到某個註解中 @SpringBootApplicaion(scanBasePackages = 'com.song.xxx')websocket
在applicationContext.xml文件中加一行:<context:component-scan base-package="com.song.xxx"/>後 @Component、@Repository、@Service、@Controller都是將類實例化注入到spring管理器中,名字只是一 個分類,實質做用是同樣的 @Repository用於標註數據訪問組件,即DAO組件 @Component泛指組件,當組件很差歸類的時候,咱們可使用這個註解進行標註。 @Service通常標註在業務接口實現類上,用於標註業務層組件 @Controller用於標註控制層組件 @Configuration標註在類上,至關於把該類做爲spring的xml配置文件中的<beans>, 做用爲:配置spring容器(應用上下文) 用於定義配置類,可替換xml配置文件,被註解的類內部包含有一個或多個被@Bean註解的方法,這些方法將會被 AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext 類進行掃描,並用於構建bean定義,初始化Spring容器
@ComponentScan:掃描知道package下標註Spring模式註解的類,若是不添加此註解,則其餘的添加註解的類 不會被springboot掃描到,更不會裝入spring容器中。
:) @Autowired默認按類型裝配 :) @Autowired默認狀況下必需要求依賴對象必須存在,若是要容許null值,能夠設置 它的required屬性爲false,如:@Autowired(required=false) :) 若是接口有多個實現類,spring並不知道用哪一個實現類,這個時候能夠結合@Qualifer註解, 注意@Qualifier註解括號裏面的必須是Person接口實現類的類名:@Qualifier("StudentService") :) @Resource後面沒有任何內容,默認經過name屬性去匹配bean,找不到再按type去匹配 :) @Resource指定了name或者type則根據指定的類型去匹配bean: @Resource(name = "teacher") / @Resource(type = Student.class) :) @Resource屬於java註解,@Autowired和@Qualifer屬於spring註解,建議使用@Resource註解, 以減小代碼和Spring之間的耦合。
能申明在其餘註解上的註解,例如:@Documented、@Componentapp
@Component做爲一種由spring容器託管的通用模式組件,任何被@Component標註的組件均爲組件掃描的候選對象,相似地,凡是被@Component元標註的註解,如@Service所標註的任何組件,也被視做組件的候選對象。
例如:
@TransacrionlService組合了@Transacrion和@Service這兩個註解 @SpringBootApplication既是模式註解,也是組合註解
較低層註解能覆蓋其元註解的同名屬性 @Component |-@Service |-@TransacrionlService 其中@TransacrionlService能夠覆蓋@Service @Service能夠覆蓋@Component