SpringBoot
一、SpringBoot介绍
Spring 诞生时是 Java 企业版(Java Enterprise Edition,JEE,也称 J2EE)的轻量级代替品。无需开发重量级的 Enterprise JavaBean(EJB),Spring 为企业级Java 开发提供了一种相对简单的方法,通过依赖注入和面向切面编程,用简单的Java 对象(Plain Old Java Object,POJO)实现了 EJB 的功能。
1). SpringBoot特性
- 基于Spring的开发提供更快的入门体验
- 开箱即用,没有代码生成,无需XML配置。同时也可以修改默认值来满足特定的需求。
- 提供了一些大型项目中常见的非功能特性,如嵌入式服务器,安全、指标、健康监测、外部配置等等。
- SpringBoot并不是对Spring功能上的增强,而是提供一种快速使用Spring的方式
二、快速搭建SpringBoot的maven项目
整合ActiveMQ为例进行简单演示 1.https://www.jianshu.com/p/4618ff34e4b2 2.https://www.jianshu.com/p/6e1df6904188;SpringBoot默认使用点对点模式! 发布订阅模式后面后面再介绍
1). pom.xml配置
启动依赖、指定编译版本、热部署、打包方式为jar,内置的有Web容器插件
<?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.lingting</groupId>
<artifactId>g_6_SpringBoot</artifactId>
<version>1.0-SNAPSHOT</version>
<!--springBoot 打包方式为jar,有内置的web容器(tomcat) -->
<packaging>jar</packaging>
<!-- 添加起步依赖 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.0.RELEASE</version>
</parent>
<!-- 变更JDK版本 -->
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 热部署 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
<!-- ActiveMQ 起步依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
</dependencies>
</project>
2). 覆盖默认配置的配置文件 application.properties
默认配置文件名为 application.properties ,建议不要修改;中文要转换为16进制表示
# access port
server.port=80
# ActiveMQ address
spring.activemq.broker-url=tcp://192.168.74.129:61616
# other properties
mylover=xiaoQing
3). 配置启动入口类 Application
package com.lingting.controller;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* SpringBoot 启动类;
* @SpringBootApplication:等同于下面三个配置的总合
* @Configuration: 用于定义一个配置类
* @EnableAutoConfiguration :Spring Boot会自动根据你jar包的依赖来自动配置项目。
* @ComponentScan: 告诉Spring 哪个packages 的用注解标识的类 会被spring自动扫描并且装入bean容器。
* 可以配置初始化的一些bean;
* */
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
4). 点对点生产者 QueueGenerateController
SpringBoot默认使用点对点的模式; 默认使用内置的MQ
package com.lingting.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
@RestController
public class QueueGenerateController {
/** 配置文件内容 */
@Autowired
private Environment env;
/** SpringMQ发送消息的模板 */
@Autowired
private JmsMessagingTemplate jmsMessagingTemplate;
@RequestMapping("/hello")
public String sayHello() {
return "<h1 style='color:darkgreen;'>Hello Word! SpringBoot myLover : "+ env.getProperty("mylover") + "</h1>";
}
/** 发送文本消息 */
@RequestMapping("/send")
public void send(String text) {
jmsMessagingTemplate.convertAndSend("springBootQueue", text);
}
/** 发送短信 */
@RequestMapping("/sendsms")
public void sendSms() {
Map map = new HashMap();
map.put("mobile", "18190681640");
map.put("template_code", "SMS_160572444");
map.put("sign_name", "哈哈大圣");
map.put("param", "{\"code\":\"686868\"}");
jmsMessagingTemplate.convertAndSend("sms", map);
}
}
5). 点对点消费者 QueueGenerateController
package com.lingting.controller;
import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;
import java.util.Map;
@Component
public class QueueConsumer {
/** 直接用队列中的类型进行参数接收 */
@JmsListener(destination = "springBootQueue")
public void readMessageListener(String text) {
System.out.println("receive message: " + text);
}
@JmsListener(destination = "smsNotHere")
public void readMessageListenerMap(Map map) {
System.out.println("receive message: " + map);
}
}
此项目中的发送短信的生产者可以配合下一篇 《SpringBoot、ActiveMQ、阿里大于短信微服务》