Spring Boot入門 and Spring Boot與ActiveMQ整合

1.Spring Boot入門

1.1什麼是Spring Boot

Spring 誕生時是 Java 企業版(Java Enterprise EditionJEE,也稱 J2EE)的輕量級代替品。無需開發重量級的 Enterprise JavaBeanEJB),Spring 爲企業級Java 開發提供了一種相對簡單的方法,經過依賴注入和麪向切面編程,用簡單的Java 對象(Plain Old Java ObjectPOJO)實現了 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

4Spring Boot 並非不對 Spring 功能上的加強,而是提供了一種快速使用 Spring 的方式。服務器

1.2 Spring Boot入門小Demo

1.2.1起步依賴

建立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後會自動把依賴傳遞過來。

1.2.2變動JDK版本

咱們發現默認狀況下工程的JDK版本是1.6 ,而咱們一般用使用1.7的版本,因此咱們須要在pom.xml中添加如下配置

  <properties>   

    <java.version>1.7</java.version>

  </properties>

添加後更新工程,會發現版本已經變動爲1.7

1.2.3引導類

只須要建立一個引導類 .

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容器

咱們直接執行這個引導類,會發現控制檯出現的這個標識

 

你能不能看出來上邊這個圖是什麼東西?

1.2.4 Spring MVC實現Hello World輸出

咱們如今開始使用spring MVC框架,實現json數據的輸出。若是按照咱們原來的作法,須要在web.xml中添加一個DispatcherServlet的配置,再添加一個spring的配置文件,配置文件中須要添加以下配置

    <!-- 使用組件掃描,不用將controllerspring中配置 -->

<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 便可看到運行結果

1.2.5修改tomcat啓動端口

src/main/resources下建立application.properties

server.port=8088

從新運行引導類。地址欄輸入

http://localhost:8088/info

1.2.6讀取配置文件信息

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");

}

1.2.7熱部署

咱們在開發中反覆修改類、頁面等資源,每次修改後都是須要從新啓動才生效,這樣每次啓動都很麻煩,浪費了大量的時間,能不能在我修改代碼後不重啓就能生效呢?能夠,在pom.xml中添加以下配置就能夠實現這樣的功能,咱們稱之爲熱部署。

<dependency>  

    <groupId>org.springframework.boot</groupId>  

    <artifactId>spring-boot-devtools</artifactId>  

</dependency>  

趕快試試看吧,是否是很爽。

1.3 Spring BootActiveMQ整合

1.3.1使用內嵌服務

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的服務,因此咱們不用單獨啓動也能夠執行應用程序。

1.3.2使用外部服務

src/main/resources下的application.properties增長配置, 指定ActiveMQ的地址

spring.activemq.broker-url=tcp://192.168.25.135:61616

運行後,會在activeMQ中看到發送的queue

 

1.3.3發送Map信息

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);

}

相關文章
相關標籤/搜索