一 spring boot与spring
spring boot在最近几年很火,好多公司也陆陆续续使用spring boot框架。那么相比于之前普遍使用的spring框架有什么本质上的优势呢?首先,Spring诞生时是Java企业版(Java Enterprise Edition,JEE,也称J2EE)的轻量级代替品。Spring为企业级Java开发提供了一种相对简单的方法,通过依赖注入和面向切面编程,用简单的Java对象(Plain Old Java Object,POJO)实现了EJB的功能。虽然Spring的组件代码是轻量级的,但它的配置却是重量级的。比如我们在使用spring mvc(视图)的时候,除了配置spring-mvc.xml之外,我们还需要对web.xml进行Spring的 DispatcherServlet 。所有这些配置都代表了开发时的损耗。因为在思考Spring特性配置和解决业务问题之间需要进行思维切换,所以写配置挤占了写应用程序逻辑的时间。和所有框架一样,Spring实用,但与此同时它要求的回报也不少。
spring boot 弥补了spring配置上的缺点,其最主要有以下四个核心:
- 1.自动配置:针对很多Spring应用程序常见的应用功能,Spring Boot能自动提供相关配置。
举例:假设你用spring配置一个嵌入式H2数据库作为 DataSource Bean,完成这个配置场景的代码大概是这样的:
@Bean
public DataSource dataSource() {
return new EmbeddedDatabaseBuilder()
.setType(EmbeddedDatabaseType.H2)
.addScripts('schema.sql', 'data.sql')
.build();
}
这个Bean配置方法创建了一个嵌入式数据库,并指定在该数据库上执行两段SQL脚本。 build()方法返回了一个指向该数据库的引用。如果用Spring Boot在应用程序的Classpath里发现H2数据库的库,那么它就自动配置一个嵌入式H2数据库。如果在Classpath里发现JdbcTemplate ,那么它还会为你配置一个 JdbcTemplate 的Bean。你无需操心那些Bean的配置,Spring Boot会做好准备,随时都能将其注入到你的Bean里
- 2.起步依赖:告诉Spring Boot需要什么功能,它就能引入需要的库。
我们在使用spring之前都会导入相关的jar包依赖,如果少一个包,就会报错,此时你要花费时间去想到底需要哪些jar包,这样会很麻烦,但是我们用springboot的时候,如果你想使用spring mvc的功能,那么你直接添加spring-boot-starter-web依赖即可。因为它集成了所有的web的jar依赖。起步依赖其实就是特殊的Maven依赖和Gradle依赖,利用了传递依赖解析,把常用库聚合在一起,组成了几个为特定功能而定制的依赖。
- 3.命令行界面:这是Spring Boot的可选特性,借此你只需写代码就能完成完整的应用程序,无需传统项目构建。
Spring Boot CLI让只写代码即可实现应用程序成为可能。利用了起步依赖和自动配置,让你专注于代码本身。说得简单一点,CLI能检测到你使用了哪些类,它知道要向Classpath中添加哪些起步依赖才能让它运转起来。一旦那些依赖出现在Classpath中,一系列自动配置就会接踵而来
- 4.Actuator:让你能够深入运行中的Spring Boot应用程序,一探究竟。每一个特性都在通过自己的方式简化Spring应用程序的开发。
Spring Boot的最后一块“拼图”是Actuator,其他几个部分旨在简化Spring开发,而Actuator
则要提供在运行时检视应用程序内部情况的能力
二 安装spring boot cli
我这里使用的是windows系统,并且是手动安装,很简单,下载、解压,随后将它的bin目录添加到系统路径里。跟配置jdk的环境变量一样。下载地址:spring boot cli下载
三 spring boot 初始化项目
spring boot 初始化项目有多种,这里主要展示三种方式:
1.Spring Initializr 初始化 Spring Boot 项目
要使用Spring Initializr,最直接的办法就是用浏览器打开http://start.spring.io,你可以看到下面的表单。
填写你的项目信息,注意后面会有个search for dependencies信息,可以添加你指定的依赖,如果找不到你要的依赖,点击“Switch to the full version”就能看到可用依赖的完整列表。
点击创建项目,导入eclipse,你会看到项目的结构如下图
2.利用spring boot cli创建
我们可以用前面安装的spring boot cli来创建项目。首先你新建一个项目存放的路径,也就是工作空间。我这里创建的是spring-boot-workplace
1.使用dos命令,cd spring-boot-workplace 进入工作空间
2.使用spring init --dependencies=web spring-boot-app指令创建一个名为spring-boot-app的web项目,进入spring-boot-workplace你可以看到这个项目
3.导入eclipse,点击打开DemoApplication.java,加入如下代码模拟应用
package com.example.springbootapp;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@RequestMapping("/hello")
String helloworld() {
return "Hello World";
}
}
4.再次打开dos,输入命令:mvn spring-boot:run。首次执行时,maven会先下载依赖仓库,下载后开始启动应用
注意:如果你没配置maven的setting.xml文件,指令执行会报错,你需要在setting.xml中添加如下代码:
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
<profile>
<repositories>
<repository>
<id>spring-releases</id>
<url>https://repo.spring.io/libs-release</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-releases</id>
<url>https://repo.spring.io/libs-release</url>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
5.测试
如果启动出现spring的图形文字,没报错,证明启动成功,输入http://localhost:8080/hello
3.利用Spring Tool Suite创建项目
解压打开exe,然后在File菜单里选中New > Spring StarterProject菜单项,随后Spring Tool Suite会显示一个如下对话框
然后根据自己的需要勾选生成
注意:你必须认识到一点,Spring Tool Suite的Spring Starter Project对话框,其实是把项目生成的工作委托给http://start.spring.io上的SpringInitializr来做的,因此必须联网才能使用这一功能。