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

猜你喜欢

转载自www.cnblogs.com/liuxuelin/p/9973511.html