SpringBoot:SpringBoot简介

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项目 ->选择WebActuator创建一个SpringBoot启动程序项目,并提供其他必需的详细信息和完成。

这将使用以下pom.xmlApplication.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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/362940.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为云(ECS)-linux服务器中-Ubuntu图形界面安装-解决root登录受限-VNCviwer/Teamviwer远程访问教程...

安装ubuntu-desktop 1.更新软件库 apt-get update2.升级软件 apt-get upgrade3.安装桌面 apt-get install ubuntu-desktop 解决root登录受限 华为云登录进去是guest用户&#xff0c;不能选择登录用户且不需要密码就即可登录。 登录进去会如下警告信息&#xff1a; 首先下载…

两列自适应布局的4种思路

前面的话 前面已经介绍过单列定宽单列自适应的两列布局&#xff0c;而两列自适应布局是指一列由内容撑开&#xff0c;另一列撑满剩余宽度的布局方式。本文将从float、table、flex和grid来介绍两列自适应布局的4种思路 float 【思路一】float 在单列定宽单列自适应的两列布局中…

机器学习中为什么使用one-hot编码

one-hot编码把分类数据转化为二进制格式&#xff0c;供机器学习使用。 转载于:https://www.cnblogs.com/xin-qing3/p/11447489.html

Java EE并发API教程

这是一个示例章节&#xff0c;摘自Francesco Marchioni编辑的WildFly上的实用Java EE 7开发 。 本章讨论了新的Java EE并发API&#xff08;JSR 236&#xff09; &#xff0c;它概述了使用一组托管资源在Java EE容器上并行执行任务的标准方法。 为了描述如何在您的应用程序中使…

经桥科技与湖南文化艺术产业集团合力打造“网乐潇湘”

签约仪式现场 签约仪式现场 签约仪式现场 经网1月7日讯(记者 陈飞 曹亮) 湖南经桥网络科技有限公司与湖南文化艺术产业集团“网乐潇湘”项目签约仪式隆重举行。经桥科技董事长姜志强、湖南文化艺术产业集团总经理陈介辉等领导出席此次签约仪式。 经桥科技与湖南文化艺术产业集…

文本溢出text-overflow和文本阴影text-shadow

前面的话 CSS3新增了一些关于文本的样式&#xff0c;其中text-overflow文本溢出和text-shadow文本阴影有些特别。因为它们有对应的overflow溢出属性和box-shadow盒子阴影属性。本文将详细介绍这两个作用在文本上的溢出和阴影属性 文本溢出 一般地&#xff0c;人们一提到文本溢出…

python第十三天,函数的嵌套定义,global,nonlocal关键字的使用,闭包及闭包的运算场景,装饰器...

今日内容 1. 函数的嵌套定义 2.global&#xff0c;nonlocal关键字 3.闭包及闭包的运用场景 4.装饰器 函数的嵌套定义 1. 概念&#xff1a;在一个函数内部定义另一个函数 2 .为什么要有函数的嵌套定义&#xff1a; 1) 函数fn2想要直接使用fn1函数的局部变量&#xff0c;可以将fn…

glup打包代码不更新

一开始以为是缓存问题&#xff0c;清完缓存依旧不行。找到打包文件找到自己改的代码是否生效了。发现修改过的代码生效了&#xff0c;but 相同方法存在两个。方法一中是修改后的内容&#xff0c;方法二是未修改的内容。原因&#xff1a;在打包前将原文件复制了一个副本&#xf…

.net反射简介

目录 [隐藏] 1 概述 2 一些在反射中经常使用的类 3 其它 4 示例 .net反射简介-概述 反射就是动态发现类型信息的能力。它帮助程序设计人员在程序运行时利用一些信息去动态地使用类型&#xff0c;这些信息在设计时是未知的&#xff0c;这种能力类型于后期绑定。反射还支持的更高…

带有Angular JS的Java EE 7 –第1部分

今天的帖子将向您展示如何使用Java EE 7和Angular JS构建非常简单的应用程序。 在去那里之前&#xff0c;让我告诉您一个简短的故事&#xff1a; 我不得不承认&#xff0c;我从来都不是Java语言的忠实拥护者&#xff0c;但是我仍然记得我第一次使用它。 我不记得确切的年份&am…

深入理解CSS定位中的堆叠z-index

前面的话 对于所有定位&#xff0c;最后都不免遇到两个元素试图放在同一位置上的情况。显然&#xff0c;其中一个必须盖住另一个。但&#xff0c;如何控制哪个元素放在上层&#xff0c;这就引入了属性z-index 定义 利用z-index&#xff0c;可以改变元素相互覆盖的顺序。这个属性…

初识服务发现及Consul框架的简单使用

初识服务发现及Consul框架的简单使用 1.什么是服务发现&#xff1f; 服务发现组件记录了&#xff08;大规模&#xff09;分布式系统中所有服务的信息&#xff0c;人们或者其它服务可以据此找到这些服务。 DNS 就是一个简单的例子。 当然&#xff0c;复杂系统的服务发现组件要提…

进程间的通信方式

5&#xff0c;进程间通信方式____ &#xff0c;____ &#xff0c;____ &#xff0c;____ &#xff0c;____ &#xff0c;_____。 管道 消息队列 共享内存 信号 信号量 套接字 管道通信&#xff1a;实质是管道文件操作&#xff0c;分为有名管道和 无名管道两种。 无名管…

JavaFX技巧4:总结

在为JavaFX开发自定义控件时&#xff0c;我强烈建议您遵循JavaFX核心控件的脚步&#xff0c;并使控件的API尽可能最终化&#xff0c;并在所有方法声明的前面放置“ final”关键字。 例 在FlexGanttFX中&#xff0c;我有很多看起来像这样的代码&#xff1a; public final Acti…

CSS光标cursor

前面的话 在浏览器中&#xff0c;光标对于提供交互反馈很有用。通过在不同的场景中改变光标&#xff0c;就能赋予其不同的含义 定义 cursor光标 值: [<uri>,]*[auto | default | pointer | crosshair | move | e-resize | ne-resize | nw-resize | n-resize | se-resize …

jquery获取value值时将数字型字符串前面的0自动截取处理方法

<li class"cwhite" value"02" id"02" οnclick"getQuestionList(02,this);">数学</li> var subjectCode $(obj).find(".bd.subject li[classcwhite active]").val(); 这种方法会把02前面的0自动截取 var subje…

《Effective C#》Item 21:用委托实现回调

委托属于C#中的新名词&#xff0c;它的应用也非常广泛&#xff0c;例如事件就是委托最简单而又直接的例子。 那么首先说说什么是委托&#xff0c;其实委托在用过C或者C的人看来就是函数指针&#xff0c;不过使用C#的大多数人都没有用过这两门语言&#xff0c;因此对委托的理解不…

人生建议

1、不要在最幸福的时候许诺。 2、不要在暴怒的时候回信息。 3、不要在悲伤的时候做决定。 4、不要在迷茫的时候选择轻松的道路。 5、不要在自己做决定后怪别人。 6、不要把现在的幸福当作理所当然。 转载于:https://www.cnblogs.com/tarenacode/p/11460619.html

Spring MVC中的验证组

可以通过groups属性将Bean验证中的验证约束添加到一个或多个组。 这使您可以限制在验证期间应用的约束集。 在某些小组应先于其他小组进行验证&#xff08;例如在向导中&#xff09;的情况下&#xff0c;这可能很方便。 从Spring MVC 3.1开始&#xff0c;可以通过org.springfra…

表单美化

前面的话 由于一些系统原生的表单控件在各个浏览器中显示效果不一致&#xff0c;且无法设置某些关键CSS样式&#xff0c;为了保证表单在各浏览器中的兼容性&#xff0c;表单美化就是不得不做的一件事了 单选按钮 【实现效果】 style"width: 100%; height: 120px;" s…