springboot 试用笔记

来源:互联网 发布:金税盘开票软件最新版 编辑:程序博客网 时间:2024/04/19 22:34

spring boot 试用笔记

起源

在2013年的SpringOne 2GX会议期间推出的,Spring Boot的项目负责人在twitter中发布的演示视频中,程序员用了不到十分钟时间,就搭建起了一个基于Spring的web程序,而且在本地运行,这个特性使它受到很大关注。

感受

我近期刚好搭建修改了一个基于spring应用的代码,刚开始这个应用使用了xml的配置,我逐步加入springmvc、logback、ibatis&&datasource、jetty-maven-plugin这些依赖,而且改为基于annotation的配置,整个骨架从无到有、调通运行成功起来大概用了1天的时间。之后迁移到纯java config的方式(移除web.xml、spring config xml)用了1个小时。再然后看到spring-boot&&spring-loaded,修改代码,调试通过大概用了30分钟。


最让我感觉惊艳的地方在于,基于spring-boot搭建应用就像使用play-framework、ror搭建应用一样简单,按需启用特性,初始阶段不需要太多的配置:一个pom.xml就足以,而且开发人员基本上不用考虑不同jar之间的版本依赖,例如logback && slf4j、spring && aspectj。这样能够很快从无到有搭建一个web应用。

spring-boot 自带tomcat/jetty 容器,在开发调试的时候根本不需要mvn compile package这些流程,配合maven插件直接在web执行 mvn spring-boot:run就可以了。

spring-boot的应用发布为war文件,在第三方容器执行。也可以使用java应用方式来standlone启动。通吃神马paas、云环境


spring-boot 和 springframework 关系如下:

user—-> spring-boot —-> springframework

使用

JDK6 建议使用:spring-boot 1.1.12.release版本(避免版本过高部分依赖的jar是基于jdk7生成的)&& maven 3+
JDK7 那就用最新版本的

建议参考文章:

  • 官方文档:http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/
    • 对应的中文版:http://qbgbook.gitbooks.io/spring-boot-reference-guide-zh/content/
  • 插件官方文档:http://docs.spring.io/spring-boot/docs/current/maven-plugin/
  • IBM的示例文档:http://www.ibm.com/developerworks/cn/java/j-lo-spring-boot/

需要注意


  • 1 官方推荐我们使用spring-boot-starter-parent作为POM依赖的parent,spring-boot-starter-parent包含了以下信息:
    • 默认编译级别为Java 1.6
    • 源码编码为UTF-8
    • 一个依赖管理节点,允许你省略普通依赖的 标签,继承自 spring-boot-dependencies POM。
    • 合适的资源过滤
    • 合适的插件配置(exec插件,surefire,Git commit ID,shade)
    • 针对properties 和 application.yml 的资源过滤

  • 2 加入spring-loaded maven插件,启用debug,如果说spring-boot开启搭建应用的快感,那么spring-loaded就是让java coder体验php这些脚本语言coding的快感 (≖ ‿ ≖)✧

代码配置很简单:

            <plugin>                <groupId>org.springframework.boot</groupId>                <artifactId>spring-boot-maven-plugin</artifactId>                <configuration>                                        <!--mvn spring-boot:run -Drun.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000"-->                    <jvmArguments>                        -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000                    </jvmArguments>                </configuration>                <dependencies>                    <!-- spring hot reload-->                    <dependency>                        <groupId>org.springframework</groupId>                        <artifactId>springloaded</artifactId>                        <version>1.2.4.RELEASE</version>                    </dependency>                </dependencies>            </plugin>

  • 3 打包war工程,spring boot应用默认是打包jar,如果改为war应用,需要修改package类型:<packaging>war</packaging>,并且实现SpringBootServletInitializer类,
@Configuration @EnableAutoConfiguration  @ComponentScan("com.xxoo")public class Application extends SpringBootServletInitializer {@Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder application) {    return application.sources(Application.class);  }public static void main(String[] args) throws Exception {    SpringApplication.run(Application.class, args);  }}

稍等,为嘛没有用@SpringBootApplication。。。因为这个类是在1.2.x版本中才出现的

详情参考: 《74.1 创建一个可部署的war文件》 这个章节


  • 4 还有一些生产环境的监控支持,详情参考:第5章,《Spring Boot执行器:Production-ready特性》
2 0