SpringBoot 【 第一章 】配置详解

image

Spring Boot 描述

世界上最好的文档来源自官方的《Spring Boot Reference Guide》,是这样介绍的:

Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can “just run”...Most Spring Boot applications need very little Spring configuration.

Spring Boot(英文中是“引导”的意思),是用来简化Spring应用的搭建到开发的过程。应用开箱即用,只要通过 “just run”(可能是 java -jar 或 tomcat 或 maven插件run 或 shell脚本),就可以启动项目。二者,Spring Boot 只要很少的Spring配置文件(例如那些xml,property)。

因为“习惯优先于配置”的原则,使得Spring Boot在快速开发应用和微服务架构实践中得到广泛应用。

计算器实战详解

pom.xml配置


4.0.0

  
  org.springframework.boot
  spring-boot-starter-parent
  1.5.4.RELEASE


com.androidmov.springcloud
SpringCloud
0.0.1-SNAPSHOT
jar
SpringCloud
SpringCloud project with spring boot


  ${basedir}/../..
  /
  UTF-8
  UTF-8
  1.8
  2.6
  3.6
  6.0.6
  1.10



  
  
    org.springframework.boot
    spring-boot-starter-web
    
      
        org.springframework.boot
        spring-boot-starter-logging
      
    
  
  
  
    org.springframework.boot
    spring-boot-starter-log4j
    1.3.8.RELEASE
  
  
    javax.servlet
    jstl
  
  
  
    org.springframework.boot
    spring-boot-starter-tomcat
     
  
  
    org.apache.tomcat.embed
    tomcat-embed-jasper
     
  
  
  
    org.springframework.boot
    spring-boot-starter-data-jpa
  
  
    com.h2database
    h2
    
  
  
  
    mysql
    mysql-connector-java
    
  
  
  
    com.amt
    tools
    1.0.1
  

  
  
    
    
  
  
    
    
    
  

  
  
      commons-lang
      commons-lang
      ${commons.lang.version}
  
  
    org.apache.commons
    commons-lang3
    3.6
  
  
    commons-configuration
    commons-configuration
    ${commons.config.version}
  
  
    commons-net
    commons-net
    ${commons.net.version}
  
  
    commons-io
    commons-io
    2.4
  

  
    org.apache.ant
    ant
    1.10.1
  

  
  
    org.springframework.boot
    spring-boot-starter-test
    test
  
  
    org.springframework.cloud
    spring-cloud-starter-eureka-server
  
  
  
    org.springframework.kafka
    spring-kafka
    1.1.1.RELEASE
  
  
  
    org.springframework.boot
    spring-boot-starter-amqp
  



  
    
      org.springframework.cloud
      spring-cloud-dependencies
      Dalston.SR1
      pom
      import
    
  


  springCloud
  
    
    
      org.apache.maven.plugins
      maven-war-plugin
      
        springCloud
      
    
    
      org.springframework.boot
      spring-boot-maven-plugin
    
    
      org.apache.maven.plugins
      maven-surefire-plugin
      
        false
      
    
  


启动应用类

package com.androidmov.adManagement;

import com.androidmov.adManagement.common.utils.configs.UtilConfig;
import org.apache.commons.configuration.Configuration;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.boot.web.support.SpringBootServletInitializer;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.web.bind.annotation.RestController;

import java.io.File;

/**
 * Created by cw on 2017/10/25. good day.
 *
 * @Author: Chen Wu
 * Blog: http://www.updatecg.xin
 */

@EnableEurekaServer
@SpringBootApplication
@RestController
@EnableScheduling
@EnableConfigurationProperties
public class EureKaServer extends SpringBootServletInitializer implements CommandLineRunner {

  public static void main(String[] args) {
      createLocalTempDirectory();
      SpringApplication.run(EureKaServer.class, args);
  }



  /**
   * 使用SpringBoot初始化Servlet配置并能够部署至tomcat使项目运行
   * @param builder
   * @return
   */
  @Override
  protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
      return builder.sources(EureKaServer.class);
  }

  /**
   * 依据配置文件创建本地目录
   */
  protected static void createLocalTempDirectory(){
      Configuration cfg = UtilConfig.getApp();
      File tmpFile = new File(cfg.getString("tmpFilePath"));
      tmpFile.mkdirs();
  }

  @Override
  public void run(String... strings) throws Exception {
      System.out.println("=========Application init============");
  }
}
  • @SpringBootApplication:Spring Boot 应用的标识 (必须)
  • @EnableEurekaServer:Spring Cloud 注册注解
  • @RestController是@Controller和@ResponseBody的结合体,两个标注合并起来的作用。
  • @EnableScheduling: 定时器
  • @EnableConfigurationProperties:配置文件启用
  • Application很简单,一个main函数作为主入口。SpringApplication引导应用,并将Application本身作为参数传递给run方法。具体run方法会启动嵌入式的Tomcat并初始化Spring环境及其各Spring组件。

Controller层类

package com.androidmov.adManagement.maker.controllers;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

  /**
  * Created by cw on 2017/10/25. good day.
  *
  * @Author: Chen Wu
  * Blog: http://www.updatecg.xin
  */
  @RestController
  public class ComputeController {

    private final Logger logger = Logger.getLogger(getClass());

    @Autowired
    private DiscoveryClient client;

    @RequestMapping(value = "/add" ,method = RequestMethod.POST)
    public Integer add(@RequestParam (value = "a",required = true) Integer a, @RequestParam(value = "b",required = true)  Integer b) {
        ServiceInstance instance = client.getLocalServiceInstance();
        Integer r = a + b;
        logger.info("/add, host:" + instance.getHost() + ", service_id:" + instance.getServiceId() + ", result:" + r);
        return r;
    }
  }

结果

Run运行ComputeController类,测试结果。
控制台显示

[FrameworkServlet 'dispatcherServlet': initialization completed in 41 ms]
[/add, host:AMT-20160520COB, service_id:rabbitmq-hello, result:30]

postman测试
[图片上传失败...(image-fb8a42-1548395711751)]

对应代码分享在 [https://github.com/UpdateCw/SpringBoot]

你可能感兴趣的:(SpringBoot 【 第一章 】配置详解)