小试 Spring Boot - Spring MVC
前阵想试下 Spring MVC 4 有了些什么新特性, 可真正用 Maven 在 IDE 中建立一个项目并不那么容易. Spring 当初在笑 EJB 的笨重时如今把自己也搞大了, 继而出台了一个 Spring Boot 来响应微服务的号召.
Spring Boot 的出世可以大大提升使用 Spring 框架时的开发效率. Spring 尽量简化 Spring 项目的配置, 一个
现在就来体验一下 Spring Boot 做一个 Spring MVC 项目有多简单, 我们仍然是建立一个 Maven 项目, 最简单的
上面的
然后是一个基本实现,
这里的注解
上面是一个 main 函数, 可以立马在 IDE 中直接运行这个主类, 能够看到控制台输出
访问
其他几种方式运行
上面我们是用
其他一些便利:
链接:
永久链接 https://yanbin.blog/try-spring-boot-spring-mvc/, 来自 隔叶黄莺 Yanbin's Blog
[版权声明]
本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。
Spring Boot 的出世可以大大提升使用 Spring 框架时的开发效率. Spring 尽量简化 Spring 项目的配置, 一个
mvn package 就轻轻松的把一个 Web 项目打成一个 fat jar, 运行 java -jar spring-boot-sample-1.0-SNAPSHOT.jar 就能通过内嵌的 Tomcat 或 Jetty 来启动一个 Web 应用了, 更别提怎么应对普通控制台应用了.现在就来体验一下 Spring Boot 做一个 Spring MVC 项目有多简单, 我们仍然是建立一个 Maven 项目, 最简单的
pom.xml 文件内容如下: 1<?xml version="1.0" encoding="UTF-8"?>
2<project xmlns="http://maven.apache.org/POM/4.0.0"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5 <modelVersion>4.0.0</modelVersion>
6
7 <groupId>cc.unmi</groupId>
8 <artifactId>spring-boot-sample</artifactId>
9 <version>1.0-SNAPSHOT</version>
10
11 <parent>
12 <groupId>org.springframework.boot</groupId>
13 <artifactId>spring-boot-starter-parent</artifactId>
14 <version>1.4.1.RELEASE</version>
15 </parent>
16 <dependencies>
17 <dependency>
18 <groupId>org.springframework.boot</groupId>
19 <artifactId>spring-boot-starter-web</artifactId>
20 </dependency>
21 </dependencies>
22</project>上面的
pom.xml 配置通过 parent spring-boot-starter-parent 项目和对 spring-boot-starter-web 的依赖把相关的依赖都引入到本项目中来了.然后是一个基本实现,
SampleController 类 1package hello;
2
3import org.springframework.boot.SpringApplication;
4import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
5import org.springframework.stereotype.Controller;
6import org.springframework.web.bind.annotation.RequestMapping;
7import org.springframework.web.bind.annotation.ResponseBody;
8
9@Controller
10@SpringBootApplication
11public class SampleController {
12
13 @RequestMapping("/")
14 @ResponseBody
15 String home() {
16 return "Hello World!";
17 }
18
19 public static void main(String[] args) throws Exception {
20 SpringApplication.run(SampleController.class, args);
21 }
22}这里的注解
@SpringBootApplication 替换成 @EnableAutoConfiguration 也行, 但是前者更强大, 因为它是后者加上 @Configuration 和 @ComponentScan 的组合.上面是一个 main 函数, 可以立马在 IDE 中直接运行这个主类, 能够看到控制台输出
1 . ____ _ __ _ _
2 /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
3( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
4 \\/ ___)| |_)| | | | | || (_| | ) ) ) )
5 ' |____| .__|_| |_|_| |_\__, | / / / /
6 =========|_|==============|___/=/_/_/_/
7 :: Spring Boot :: (v1.4.1.RELEASE)
8...........................
92016-10-05 23:21:05.260 INFO 88095 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
102016-10-05 23:21:05.271 INFO 88095 --- [ main] hello.SampleController : Started SampleController in 7.402 seconds (JVM running for 8.102)访问
http://localhost:8080/, 得到预计的输出1➜ / curl -i http://localhost:8080/
2HTTP/1.1 200
3X-Application-Context: application
4Content-Type: text/plain;charset=UTF-8
5Content-Length: 12
6Date: Thu, 06 Oct 2016 04:28:14 GMT
7
8Hello World!其他几种方式运行
- 前面提到过, 用
mvn package生成一个 jar 包, 然后用java -jar spring-boot-sample-1.0-SNAPSHOT.jar一样能启动内嵌的 Tomcat - 使用
spring-boot-maven-plugin插件, 这是开发中最常见的方法, 可以说是 Spring Boot 的标配. 需要在pom.xml中添加1<build> 2 <plugins> 3 <plugin> 4 <groupId>org.springframework.boot</groupId> 5 <artifactId>spring-boot-maven-plugin</artifactId> 6 </plugin> 7 </plugins> 8</build>
之后便可以用mvn spring-boot:run来启动内嵌 Tomcat; 如果需要 Debug 方式启动 Tomcat,
mvn spring-boot:run -Drun.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005" - 如果就是想要和从前一样生成一个 WAR 包部署到 Tomcat 里去行吗? 当然没问题, 只要在
pom.xml中加上项目属性<packaging>war</packaging>, 这时候再来mvn package生成的就是一个 WAR 包了.
上面我们是用
SpringApplication.run(SampleController.class, args) 启动了一个 Controller, 如果是要启动多个 Controller 该如何呢? 写上多个就行啦, 在这里1 public static void mains(String[] args) throws Exception {
2 SpringApplication.run(new Object[]{SampleController.class, AnotherController.class}, args);
3 }其他一些便利:
- 引入依赖 org.springframework.boot:spring-boot-starter-actuator 可以获得开箱即得的运维支持, 如
/beans看到所有的 bean,/info基本信息, 甚至/shutdown关闭应用. 可以启动控制台看到相关的路径映射. - 约定的强大的外部化属性支持, 如从命令行参数, 系统属性; 约定位置外的
application.properties或application.yaml文件中读取属性, 注入时只需@Value("${name}") - 对
/static,/public,/resources或/META-INF/resources目录只默认为静态文件 - 还出了 Spring Boot CLI, 在 Mac 下用
bew tap pivotal/tap; brew install springboot安装, 命令为spring
链接:
永久链接 https://yanbin.blog/try-spring-boot-spring-mvc/, 来自 隔叶黄莺 Yanbin's Blog
[版权声明]
本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。