SpringBoot ...如今,有关SpringBoot的话题很多。 那么,SpringBoot是什么?
SpringBoot是一个新的Spring产品组合项目,它通过大幅度减少所需的配置量来构建可立即投入生产的Spring应用程序。 Spring Boot通过基于运行时可用的类路径库自动注册默认配置,将配置样式的约定提升到了新的水平 。
嗯..您可能已经在许多博客上阅读了有关SpringBoot的介绍。 因此,让我详细说明什么是SpringBoot以及它如何帮助更快地开发Spring应用程序。
当许多Java开发人员为构建企业应用程序而使用EJB 1.x / 2.x时,Rod Johnson创建了Spring框架。 通过使用依赖注入和面向方面的编程概念,Spring框架使开发业务组件变得容易。 Spring变得非常流行,更多的Spring模块(如SpringSecurity,Spring Batch,Spring Data等)成为Spring产品组合的一部分。 随着越来越多的功能添加到Spring中,配置所有spring模块及其依赖项变得繁琐。 除此之外,Spring还提供了至少3种方法! 有些人将其视为灵活性,而另一些人则将其视为混乱。
慢慢地,配置所有Spring模块以使其协同工作成为一个巨大的挑战。 Spring团队提出了许多方法,通过引入Spring XML DSL,Annotations和JavaConfig来减少所需的配置量。
在开始的时候,我记得在本节和许多声明中配置了大量的jar版本声明。 然后,我学习了如何使用基本结构和最低要求的配置来创建Maven原型。 这减少了很多重复工作,但没有完全消除。
无论您是手动编写配置还是通过一些自动化方式生成配置,如果都可以看到代码,则必须对其进行维护。
因此,无论您使用XML还是Annotations还是JavaConfig,您仍然都需要再配置一次(复制粘贴)相同的基础结构设置。
另一方面,J2EE(很久以前就死了)作为JavaEE出现,并且自JavaEE6以来(与J2EE和JavaEE5相比)使用JavaEE平台开发企业应用程序变得很容易。
JavaEE7发行时还带有所有出色的CDI,WebSocket,批处理,JSON支持等,这些功能也变得更加简单和强大。 使用JavaEE,您不需要太多的XML配置,并且war文件的大小将以KB为单位(对于非helloworld / non-stageshow应用程序,这真的是???!) 当然,这种“配置之上的约定”和“您无需将API粘合到appServer上就已经做到了”的论点成为JavaEE在Spring上的主要卖点。 然后,Spring团队使用SpringBoot解决了这个问题! 现在是时候到JavaEE展示SpringBoot在JavaEE中的对应版本了,JBoss Forge呢? 我喜欢Spring vs JavaEE这件事,它催生了功能强大的工具,这些工具最终简化了开发人员的工作!
很多时候,我们需要使用相同的库进行类似的基础架构设置。 例如,以一个Web应用程序为例,您将DispatcherServlet url-pattern映射到“ /”,使用带有Spring Data JPA后端的Jackson JSON库来实现RESTFul Web服务。 同样,可能存在需要类似基础结构配置的批处理或Spring集成应用程序。
SpringBoot进行了救援 。 SpringBoot查看可用于运行时类路径的jar文件,并使用明智的默认值为您注册Bean,这些默认值可以用显式设置覆盖。 而且, SpringBoot仅在jar文件可用并且您没有定义任何此类bean时才配置这些bean 。 总的来说,SpringBoot提供了通用的基础结构,而无需任何显式配置,但是允许开发人员在需要时覆盖。
为了使事情变得更简单,SpringBoot团队提供了许多入门项目,这些项目已预先配置了常用的依赖项。 例如,Spring Data JPA入门项目随附了具有Hibernate实现的JPA 2.x以及Spring Data JPA基础结构设置。 Spring Web Starter附带有Spring WebMVC,嵌入式Tomcat,Jackson JSON和Logback设置。
Aaah ..足够的理论..let进入了编码。
我正在使用最新的STS-3.5.1 IDE,它提供了比其早期版本更多的入门项目选项,例如Facebbok,Twitter,Solr等。
通过转到文件->新建-> Spring Starter项目 ->选择Web和Actuator创建一个SpringBoot启动程序项目,并提供其他必需的详细信息和完成。
这将使用以下pom.xml和Application.java创建一个Spring Starter Web项目。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.sivalabs</groupId><artifactId>hello-springboot</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><name>hello-springboot</name><description>Spring Boot Hello World</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.1.3.RELEASE</version><relativePath/></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency> </dependencies><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><start-class>com.sivalabs.springboot.Application</start-class><java.version>1.7</java.version></properties><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
package com.sivalabs.springboot;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}
继续并将该类作为独立的Java类运行。 它将在8080端口上启动嵌入式Tomcat服务器。 但是我们尚未添加任何要访问的端点,让我们继续并添加一个简单的REST端点。
@Configuration
@ComponentScan
@EnableAutoConfiguration
@Controller
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);} @RequestMapping(value="/")@ResponseBodypublic String bootup(){return "SpringBoot is up and running";}
}
现在将浏览器指向http:// localhost:8080 / ,您应该看到响应“ SpringBoot已启动并正在运行”。
请记住,在创建项目时,我们还添加了Actuator启动器模块。 使用Actuator,您可以获得有关您的应用程序的许多有趣的事实。
尝试访问以下URL,您会看到SpringBoot提供的许多运行时环境配置。
- http:// localhost:8080 / beans
- http:// localhost:8080 / metrics
- http:// localhost:8080 / trace
- http:// localhost:8080 / env
- http:// localhost:8080 / mappings
- http:// localhost:8080 / autoconfig
- http:// localhost:8080 / dump
SpringBoot执行器值得一个专门的博客文章来介绍其众多功能,我将在以后的文章中介绍它。
我希望本文提供有关SpringBoot的一些基本介绍,以及它如何简化Spring应用程序的开发。
有关SpringBoot的更多信息,请参见即将发表的文章 。
翻译自: https://www.javacodegeeks.com/2014/07/springboot-introducing-springboot.html