springboot 试用笔记

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 那就用最新版本的

建议参考文章:


需要注意


  • 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 {

@Override
protected 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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值