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]