Spring 誕生時是 Java 企業版(Java Enterprise Edition,JEE,也稱 J2EE)的輕量級代替品。無需開發重量級的 Enterprise JavaBean(EJB),Spring 爲企業級Java 開發提供了一種相對簡單的方法,經過依賴注入和麪向切面編程,用簡單的Java 對象(Plain Old Java Object,POJO)實現了 EJB 的功能。java
雖然 Spring 的組件代碼是輕量級的,但它的配置倒是重量級的。一開始,Spring 用 XML 配置,並且是不少 XML 配置。Spring 2.5 引入了基於註解的組件掃描,這消除了大量針對應用程序自身組件的顯式 XML 配置。Spring 3.0 引入了基於 Java 的配置,這是一種類型安全的可重構配置方式,能夠代替 XML。全部這些配置都表明了開發時的損耗。由於在思考 Spring 特性配置和解決業務問題之間須要進行思惟切換,因此寫配置擠佔了寫應用程序邏輯的時間。和全部框架同樣,Spring 實用,但與此同時它要求的回報也很多。web
除此以外,項目的依賴管理也是件吃力不討好的事情。決定項目裏要用哪些庫就已經夠讓人頭痛的了,你還要知道這些庫的哪一個版本和其餘庫不會有衝突,這難題實在太棘手。而且,依賴管理也是一種損耗,添加依賴不是寫應用程序代碼。一旦選錯了依賴的版本,隨之而來的不兼容問題毫無疑問會是生產力殺手。spring
Spring Boot 讓這一切成爲了過去。編程
Spring Boot 是 Spring 社區較新的一個項目。該項目的目的是幫助開發者更容易的建立基於 Spring 的應用程序和服務,讓更多人的人更快的對 Spring 進行入門體驗,爲 Spring 生態系統提供了一種固定的、約定優於配置風格的框架。json
Spring Boot 具備以下特性:瀏覽器
(1)爲基於 Spring 的開發提供更快的入門體驗tomcat
(2)開箱即用,沒有代碼生成,也無需 XML 配置。同時也能夠修改默認值來知足特定的需求。安全
(3)提供了一些大型項目中常見的非功能性特性,如嵌入式服務器、安全、指標,健康檢測、外部配置等。springboot
(4)Spring Boot 並非不對 Spring 功能上的加強,而是提供了一種快速使用 Spring 的方式。服務器
建立Maven工程 springboot_demo(打包方式jar)
在pom.xml中添加以下依賴
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.4.0.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> |
咱們會驚奇地發現,咱們的工程自動添加了好多好多jar包
........
而這些jar包正式咱們作開發時須要導入的jar包。由於這些jar包被咱們剛纔引入的spring-boot-starter-web所引用了,因此咱們引用spring-boot-starter-web後會自動把依賴傳遞過來。
咱們發現默認狀況下工程的JDK版本是1.6 ,而咱們一般用使用1.7的版本,因此咱們須要在pom.xml中添加如下配置
<properties> <java.version>1.7</java.version> </properties> |
添加後更新工程,會發現版本已經變動爲1.7
只須要建立一個引導類 .
package cn.itcast.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } |
簡單解釋一下,@SpringBootApplication其實就是如下三個註解的總和
@Configuration: 用於定義一個配置類
@EnableAutoConfiguration :Spring Boot會自動根據你jar包的依賴來自動配置項目。
@ComponentScan: 告訴Spring 哪一個packages 的用註解標識的類 會被spring自動掃描而且裝入bean容器。
咱們直接執行這個引導類,會發現控制檯出現的這個標識
你能不能看出來上邊這個圖是什麼東西?
咱們如今開始使用spring MVC框架,實現json數據的輸出。若是按照咱們原來的作法,須要在web.xml中添加一個DispatcherServlet的配置,再添加一個spring的配置文件,配置文件中須要添加以下配置
<!-- 使用組件掃描,不用將controller在spring中配置 --> <context:component-scan base-package="cn.itcast.demo.controller" /> <!-- 使用註解驅動不用在下邊定義映射器和適配置器 --> <mvc:annotation-driven> <mvc:message-converters register-defaults="true"> <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"> <property name="supportedMediaTypes" value="application/json"/> <property name="features"> <array> <value>WriteMapNullValue</value> <value>WriteDateUseDateFormat</value> </array> </property> </bean> </mvc:message-converters> </mvc:annotation-driven> |
可是咱們用SpringBoot,這一切都省了。咱們直接寫Controller類
package cn.itcast.demo.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloWorldController { @RequestMapping("/info") public String info(){ return "HelloWorld"; } } |
咱們運行啓動類來運行程序
在瀏覽器地址欄輸入 http://localhost:8080/info 便可看到運行結果
在src/main/resources下建立application.properties
server.port=8088 |
從新運行引導類。地址欄輸入
在src/main/resources下的application.properties 增長配置
url=http://www.itcast.cn |
我要在類中讀取這個配置信息,修改HelloWorldController
@Autowired private Environment env;
@RequestMapping("/info") public String info(){ return "HelloWorld~~"+env.getProperty("url"); } |
咱們在開發中反覆修改類、頁面等資源,每次修改後都是須要從新啓動才生效,這樣每次啓動都很麻煩,浪費了大量的時間,能不能在我修改代碼後不重啓就能生效呢?能夠,在pom.xml中添加以下配置就能夠實現這樣的功能,咱們稱之爲熱部署。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency> |
趕快試試看吧,是否是很爽。
(1)在pom.xml中引入ActiveMQ起步依賴
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-activemq</artifactId> </dependency> |
(2)建立消息生產者
/** * 消息生產者 * @author Administrator */ @RestController public class QueueController { @Autowired private JmsMessagingTemplate jmsMessagingTemplate;
@RequestMapping("/send") public void send(String text){ jmsMessagingTemplate.convertAndSend("itcast", text); } } |
(3)建立消息消費者
@Component public class Consumer { @JmsListener(destination="itcast") public void readMessage(String text){ System.out.println("接收到消息:"+text); } } |
測試:啓動服務後,在瀏覽器執行
http://localhost:8088/send.do?text=aaaaa
便可看到控制檯輸出消息提示。Spring Boot內置了ActiveMQ的服務,因此咱們不用單獨啓動也能夠執行應用程序。
在src/main/resources下的application.properties增長配置, 指定ActiveMQ的地址
spring.activemq.broker-url=tcp://192.168.25.135:61616 |
運行後,會在activeMQ中看到發送的queue
(1)修改QueueController.java
@RequestMapping("/sendmap") public void sendMap(){ Map map=new HashMap<>(); map.put("mobile", "13900001111"); map.put("content", "恭喜得到10元代金券"); jmsMessagingTemplate.convertAndSend("itcast_map",map); } |
(2)修改Consumer.java
@JmsListener(destination="itcast_map") public void readMap(Map map){ System.out.println(map); } |