正能量
從這一刻起你,你就是有無限可能!優秀從你開始-生命不息,奮鬥不止,少壯不努力老大徒傷悲!
SpringBoot介紹
它的設計目的就是爲例簡化開發,開啓了各種自動裝配,你不想寫各種配置文件,引入相關的依賴就能迅速搭建起一個web工程。它採用的是建立生產就緒的應用程序觀點,優先於配置的慣例。可能你有很多理由不放棄SSM,SSH,但是當你一旦使用了springboot ,你會覺得一切變得簡單了,配置變的簡單了、編碼變的簡單了,部署變的簡單了,感覺自己健步如飛,開發速度大大提高了。就好比,當你用了IDEA,你會覺得再也回不到Eclipse時代一樣。我建議大家去淘寶買一個學生版本的IDEA,正所謂工慾善其事必先利其器,大概是25塊錢,本人也買了一個。
在下載一個box,隨時可以更新最新版本的功能
環境要求:
本地要有jdk8
maven要求3.0
開發工具IDEA
當前目錄結構爲如下:
一共2個pom文件,一個是父級pom,主要是管理版本,另一個是項目中需要依賴的jar,需要明確指定。
結構說明
- csdn(父工程)
- pom.xml 父級pom
- duxiutianlang-01-application (子工程)
- pom.xml 模塊工程的pom.xml
- resources
- statics 靜態文件
- templates 模板文件
- application.yml 應用程序啓動配置文件
父pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.duxiutianlang</groupId>
<artifactId>duxiutianlang</artifactId>
<version>0.0.1-SNAPSHOT</version>
<modules>
<module>duxiutianlang-01-application</module>
</modules>
<packaging>pom</packaging>
<name>duxiutianlang root</name>
<description>從這一刻起你,你就是有無限可能 優秀從你開始 生命不息,奮鬥不止,少壯不努力老大徒傷悲</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.6.RELEASE</version>
<relativePath/>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
這裏我規範了使用的是 springboot的2.0.6版本,所以後面的所有子工程都是以這個版本來做練習。
子pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>duxiutianlang</artifactId>
<groupId>com.duxiutianlang</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>duxiutianlang-01-application</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
這裏我們引入了spring-boot-starter-web和spring-boot-starter-test
spring-boot-starter-web 幫我們依賴了很多相關的依賴,包括spring整個體系,還有內嵌的tomcat
功能列子
說的再多還不如寫一個實際的列子來說明,這樣更容易接受。
我們來寫一個controller感受一下。
package com.duxiutianlang.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class GreetController {
@RequestMapping("/")
public String sayHi(){
return "獨秀天狼springboot從入門到牛皮,少壯不努力老大徒傷悲!";
}
}
項目目前的結構如下:
啓動Application的main方法,打開瀏覽器localhost:8080,瀏覽器顯示:
獨秀天狼springboot從入門到牛皮,少壯不努力老大徒傷悲!
各位是否已經體會到了springboot開發的簡潔和神奇了
- 沒有web.xml的配置。
- 沒有任何的springmvc的配置文件,springboot幫您自動集成了。
- 沒有看到我用外部tomcat去部署就可以訪問,springboot內部就嵌入了。
springboot打包,進行外部運行,非常的簡單。
在IDEA裏面直接點擊package就可以打包到target目錄下,請看效果。
[INFO]
[INFO] --- spring-boot-maven-plugin:2.0.6.RELEASE:repackage (default) @ duxiutianlang-01-application ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 6.849 s
[INFO] Finished at: 2019-12-20T18:13:49+08:00
[INFO] ------------------------------------------------------------------------
看到這樣就說明打包成功了。
到此,我們就看到一個完整的編寫和打包的過程。
運行jar包
java -jar duxiutianlang-01-application-0.0.1-SNAPSHOT.jar
我們繼續看一下springboot給我們創建了哪些bean
package com.duxiutianlang;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class,args);
}
@Bean
public String printAllBeansInSpring(ApplicationContext applicationContext){
String[] beanDefinitionNames = applicationContext.getBeanDefinitionNames();
for (String beanDefinitionName : beanDefinitionNames) {
System.out.println(beanDefinitionName);
}
return "scan all beans";
}
}
運行結果:
org.springframework.context.annotation.internalConfigurationAnnotationProcessor
org.springframework.context.annotation.internalAutowiredAnnotationProcessor
org.springframework.context.annotation.internalRequiredAnnotationProcessor
org.springframework.context.annotation.internalCommonAnnotationProcessor
org.springframework.context.event.internalEventListenerProcessor
org.springframework.context.event.internalEventListenerFactory
application
org.springframework.boot.autoconfigure.internalCachingMetadataReaderFactory
greetController printAllBeansInSpring
org.springframework.boot.autoconfigure.AutoConfigurationPackages
org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration
org.springframework.boot.autoconfigure.condition.BeanTypeRegistry
propertySourcesPlaceholderConfigurer
org.springframework.boot.autoconfigure.websocket.servlet.WebSocketServletAutoConfigurationEmbeddedTomcat
tomcatServletWebServerFactory
org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration
servletWebServerFactoryCustomizer
tomcatServletWebServerFactoryCustomizer
。。。。。。。。。。。。。。。
差不多有110多個bean被springboot自動注入到了 IOC容器中。可見我們大部分需要用到的我們都可以在很輕鬆的進行注入並且適用。
SpringTest單元測試
package com.duxiutest;
import com.duxiutianlang.Application;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.web.client.RestTemplate;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
public class SpringUnitTest {
@Autowired
private RestTemplateBuilder restTemplateBuilder;
@Test
public void testAccessBaidu(){
RestTemplate restTemplate = restTemplateBuilder.build();
String forObject = restTemplate.getForObject("http://www.baidu.com/", String.class);
System.out.println(forObject);
}
}
RestTemplateBuilder 這個bean 是在springboot啓動的時候就已經幫我們注入進來了,看下面的你們自行去測試,我就不再贅述。
org.springframework.boot.autoconfigure.http.codec.CodecsAutoConfiguration
org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration
spring.info-org.springframework.boot.autoconfigure.info.ProjectInfoProperties
org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration
restTemplateBuilder
org.springframework.boot.autoconfigure.web.embedded.EmbeddedWebServerFactoryCustomizerAutoConfiguration$TomcatWebServerFactoryCustomizerConfiguration
tomcatWebServerFactoryCustomizer
源碼下載鏈接: https://github.com/juniuzhuang/csdn.git
感興趣的同學自己下載下來研究。
我講解springboot的方式和其他有較大的差距,我要大家知道所以然,看到別人這樣就不知道爲什麼,這樣還是學不到什麼,萬事開頭難,希望大家好好消化,等你們覺得沒問題了,我相信後面的課程大家會非常的喜歡,並且也會越來越簡單。