spring boot 的基本使用和短信微服务的搭建
Posted liuxuelin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring boot 的基本使用和短信微服务的搭建相关的知识,希望对你有一定的参考价值。
1.spring boot简介:
1)spring boot是基于spring开发的,提供了一种快速使用spring的方式,无需xml配置文件
2)解决的问题:
大量配置
依赖问题
重复性配置
3)springboot思想:
自动配置
起步依赖:需要什么功能,就引入需要的库
命令行页面
actuator
2.入门使用:
1)创建一个jar工程 //使用spring创建web工程时,打包方式选择jar,因为spring boot内置了tomcat
2)起步依赖: //原理:依赖传递
通过spring boot 启动器,进行依赖的快速添加,如一个web工程只需要引入两个依赖:
<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> //导入web启动器
</dependency>
</dependencies>
3)变更jdk版本 //默认为jdk1.6
只需要在pom.xml中配置一个常量即可:
<properties>
<java.version>1.7</java.version>
</properties>
4)引导类:用于启动spring boot工程
1)只需要创建一个类Application,编写main方法,在main方法中添加一个run方法即可,在类上添加注解:@SpringBootApplication
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args); //第一个参数为本类的.class,第二个args对应main方法的参数
}
}
2)直接运行这个main方法即可启动spring boot工程
5)helloWorldController类的编写: //就是一个springmvc的Controller:
@RestController
public class HelloWorldController {
@RequestMapping("/info")
public String info(){
return "HelloWorld";
}
}
6)直接启动引导类,即可启动这个工程:在浏览器地址栏输入 http://localhost:8080/info 即可看到运行结果
原理:引导类的main方法上的@SpringBootApplication会对工程进行默认的配置。会扫描与引导类在同一个包下的类上的注解
7)spring boot工程默认端口为8080,修改端口的方式:
1)在 src/main/resources 下创建 application.properties //这个文件的名称固定
2)在文件中配置端口的常量: //重新启动工程,即可生效
server.port=9001
3)也可以在这个配置文件中自定义自己需要的属性:
url=www.baidu.com
8)配置文件application.properties中的属性值的获取
1)在需要获取属性的类中注入一个Environment对象:
@Autowired
private Environment env; //注意这个Environment所在的包:...env包下
2)直接调用Environment的getProperty()即可
env.getProperty("url");
@RestController
public class HelloWorldController {
@Autowired
private Environment env;
@RequestMapping("/info")
public String info(){
return "HelloWorld~~"+env.getProperty("url");
}
}
9)spring boot工程的热部署:
我们在开发中反复修改类、页面等资源,每次修改后都是需要重新启动才生效,这样每次启动都很麻烦,浪费了大量的时间。可以在pom.xml 中添加如下配置实现spring boot工程的热部署:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId> //添加这个依赖后,修改配置文件或类中内容时,不需要重新启动即可生效
</dependency>
3.sprign boot 和activemq的整合:
1)加入activemq的启动依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
2)消息生产者的编写
@RestController
public class QueueController {
@Autowired
private JmsMessagingTemplate jmsMessagingTemplate; //注入模板
@RequestMapping("/send")
public void send(String text){
jmsMessagingTemplate.convertAndSend("itcast", text); //通过模板发送消息,第一个参数为消息名称,第二个参数为消息内容
}
}
注意:也可直接发送一个Map对象的消息,将上面方法中的text改为需要发送的Map对象即可
3)消息消费者:
@Component
public class Consumer {
@JmsListener(destination="itcast") //添加注解监听"itcast"消息
public void readMessage(String text){ //方法的参数即为接收到的消息,参数类型与消息类型对应 //如果接收的是Map,则参数要为Map类型
System.out.println("接收到消息:"+text);
}
}
注意:上面使用的activemq使用的是spring boot 内嵌的服务。使用外部的activemq的方法:
在application.properties中配置一个常量即可:
spring.activemq.broker-url=tcp://192.168.25.135:61616 //常量名称固定,ip为外部activemq的IP
4.短信微服务:业务轻量级,独立实现某个功能
1)创建工程,导入依赖:
2)配置jdk版本为1.7
3)spring-boot-starter-parent //启动器父包
4)spring-boot-starter-web //web工程包
5)spring-boot-starter-activemq //activemq包
6)aliyun-java-sdk-dysmsapi //阿里大于发短信的包
7)aliyun-java-sdk-core //阿里大于发短信的包
2)创建引导类 //同上面的引导类
3)创建配置文件 application.properties
server.port=9003 //配置端口
spring.activemq.broker-url=tcp://192.168.25.135:61616 //配置连接activemq的ip端口
accessKeyId=不告诉你 //配置发短信的id
accessKeySecret=不告诉你 //配置发短信的密钥
4)创建发短信的工具类: //参考阿里大于发短信的工具类
@Component //需要加入
public class SmsUtil { //对应阿里大于中的
@Autowired
private Environment env; //注入Environment获取配置文件信息
public SendSmsResponse sendSms(String mobile,String template_code,String //方法中的需要的参数放在形参中动态获取
sign_name,String param) throws ClientException {
5)编写消息监听类 //消息消费者
@Component
public class SmsListener {
@Autowired
private SmsUtil smsUtil;
@JmsListener(destination="sms")
public void sendSms(Map<String,String> map){
try {
SendSmsResponse response = smsUtil.sendSms(
map.get("mobile"),
map.get("template_code"),
map.get("sign_name"),
map.get("param") );
System.out.println("Code=" + response.getCode());
System.out.println("Message=" + response.getMessage());
System.out.println("RequestId=" + response.getRequestId());
System.out.println("BizId=" + response.getBizId());
} catch (ClientException e) {
e.printStackTrace();
}
}
}
以上是关于spring boot 的基本使用和短信微服务的搭建的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 OAuth2 保护 2 个 Spring Boot 微服务之间的通信?
Spring Cloud Alibaba Spring Boot 微服务集成开发配置