Spring Boot(1) - 初见

Spring Boot 是Spring家族当中的一个全新框架 , 设计的目的是用来简化应用的初始搭建以及开发过程
该框架使用了特定的方式进行配置 , 从而使开发人员不再需要定义样板化的配置


Spring本身非常强大 , 但是缺点就是需要大量的XML配置用来完成大量的依赖管理

Spring Boot的目标就是解决这方面的问题
可以帮助开发者快速启动一个web容器 ( 相当于是将tomcat直接嵌入到项目当中 , 而省去了部署运行的过程 )
它可以作为微服务的一个入门微框架

Hello World

现在尝试快速搭建一个使用SpringBoot运行的web项目

创建maven项目

创建一个普通的maven项目 , 添加spring-boot的依赖
因为我们需要让spring-boot来运行一个web项目
所以添加spring-boot-starter-web

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>1.5.3.RELEASE</version>
</dependency>
编写Controller
@RestController
public class TestController {
	@RequestMapping("/")
	public String home() {
		return "hello";
	}
}

这里的@RestController相当于是@Controller与@ResponseBody的组合
也就是控制器方法的返回值就会直接作为HTTP请求的响应体内容
( 这个步骤与SpringMVC当中基本一致 )

启动程序

现在我们还需要一个程序的启动入口 , 也就是一个main方法

@SpringBootApplication
public class Application {
	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
	}
}

@SpringBootApplication 是一个组合注解 , 相当于包含下列3个注解

  • @Configuration - 声明当前类是个配置类 , 相当于之前配置Spring所用的xml文件
  • @EnableAutoConfiguration - 作用是让SpringBoot根据应用所声明的依赖来对Spring框架进行自动配置
  • @ComponentScan - 自动扫描包名下所有使用 @Component @Service @Repository @Controller 的类 , 并将其注册为bean

注意 : 这里默认扫描的是同包下的类
所以如果TestController与启动类不在同一个包下面 , 则不会生效

现在运行程序 , 然后使用浏览器访问
http://localhost:8080/
就可以执行到控制器方法了 , 并且获得对应的响应

不过在这里都是执行的默认配置 , 并没有进行任何定制 , 算是一个最简单的demo


热部署

直接使用上面的默认配置 , 在对程序执行修改之后 ( 哪怕是只修改了方法内部代码 , 没有改变类结构 ) , 是无法立即生效的

为了开发方便 , 可以使用下面的方案

热启动

在pom.xml当中添加如下依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <version>1.5.4.RELEASE</version>
</dependency>

这里实现的其实不是真正的热部署
这个jar包是作为一个spring-boot的开发工具的
每次对代码有修改 , 都会去重新加载spring application的上下文
相当于是自动重启程序

热部署

要实现真正的热部署 , 需要用到springloaded这个包
但是并不是直接在项目当中引入
而是添加到JVM的参数

-javaagent:/Users/Sookie/Documents/apache-maven-3.5.0/mavenLib/org/springframework/springloaded/1.2.7.RELEASE/springloaded-1.2.7.RELEASE.jar -noverify

在eclipse当中的设置

即可实现对代码修改后实时生效


与maven的配合

使用Spring Boot Maven Plugin这个插件 , 可以实现用maven来运行或者打包spring boot程序

在pom.xml当中添加该插件
<build>
  ...
  <plugins>
    ...
    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
      <version>1.5.4.RELEASE</version>
      <executions>
        <execution>
          <goals>
            <goal>repackage</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
    ...
  </plugins>
  ...
</build>
使用maven运行该项目

定位到项目目录 , 执行

mvn spring-boot:run

与在IDE当中直接运行主类效果是一样的

使用maven进行打包

定位到项目目录 , 执行

mvn package

这时候会在target目录下生成一个jar包文件

注意 : 如果不使用这个插件 , 打包也是可以成功的
但是会因为缺少清单文件而无法运行
也就是说这个插件会在打包过程中自动生成清单文件

比如我这里打包生成的jar文件是spring_boot_demo-1.0-SNAPSHOT.jar
执行下面的命令可以直接运行

java -jar spring_boot_demo-1.0-SNAPSHOT.jar
posted @ 2017-06-27 22:53  日月追影俯河山  阅读(212)  评论(0编辑  收藏  举报
TOP