Spring Boot 系列(一)快速入门

简介

  • Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者的。
  • 在以前的spring项目中,都会面对大量繁琐的配置,使用的时候基本上都是大量的复制黏贴。而Spring Boot 则能让我们在不需要过多的配置下,轻松快速地搭建Spring Web应用,开箱即用,没有代码生成,也无需XML配置,从而快速使用spring框架。

开始

版本:java 1.8.0_51 & spring boot 1.5.4

一、构建简单spring boot 项目

这里官网提供的生成器SPRING INITIALIZR 来创建简单的spring boot 项目。

1. 访问 http://start.spring.io

Spring INITIALIZR.png

选项: 工程(maven) 语言(java) SpringBoot版本(1.5.4)
Group填组名,Artifact填模块名,右侧Dependencies 可以选择相应的依赖,因为我们要构建web项目,所以可以添加web的依赖。
点击 Generate Project 生成下载项目。

2. 把下载的maven项目导入IDE并运行

把下载的项目解压并导入到IDE中(这里使用IntelliJ IDEA)
如下:

spring boot.png

直接运行 DemoApplication.java 的main方法。
运行成功的截图:

run.png

其中可以看到,项目的进程ID为:25642,可以通过java的jconsole工具查看详细信息。
其中可以看到项目的启动端口为8080 (spring boot 默认端口,可以在application.properties中修改)

port.png

3. 编写controller服务

新建controller包,包下新建IndexController
package com.sam.demo.controller;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** @author sam* @since 2017/7/14*/
@RestController
public class IndexController {@RequestMapping("/index")public String index() {return "index";}}
注:@RestController 这个注解相当于同时添加@Controller和@ResponseBody注解。
运行DemoApplication.java 启动项目,启动日志可以看到端口为8080
打开浏览器访问:http://localhost:8080/index 可得结果。

说明'''项目运行方式:

  • 在idea中,直接运行DemoApplication.java 文件。
  • 把项目通过maven命令 mvn package 打成jar包,通过命令 java -jar demo-0.0.1-SNAPSHOT.jar 直接执行jar包
  • 借助maven插件,执行mvn spring-boot:run 即可运行项目。

二、pom.xml 讲解

打开pom.xml文件,查看配置信息

继承 parent 父模块,spring-boot-starter-parent 模块中包含了自动配置、日志和YAML(参考:https://my.oschina.net/u/3235888/blog/887854) ,使构建spring项目变得简单。

 <!-- 继承 spring boot 父包-->
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.4.RELEASE</version><relativePath/> <!-- lookup parent from repository -->
</parent>

pom.xml中依赖 spring-boot-starter-web 模块,包括了Tomcat和spring-webmvc(参考:https://my.oschina.net/u/3235888/blog/887854) ,不需要指定version 版本,因为父模块中已经有默认配置,如果需要指定版本可添加。

<!-- 构建web项目模块 包括了Tomcat和spring-webmvc -->
<!-- spring-boot-starter-web 默认依赖了tomcat的starter 所以使得项目可以直接运行而不需要部署到tomcat中-->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>

pom.xml中依赖 spring-boot-starter-test 测试模块,包括JUnit、Hamcrest、Mockito

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope>
</dependency>
在spring-boot中,模块的依赖都是以starter的方式进行,以 spring-boot-starter-方式命名,指明了具体的模块。spring-boot生态中提供了丰富的starter供开发者使用(参考:https://my.oschina.net/u/3235888/blog/887854)
这种模块化的依赖,简化了大量的依赖配置。使用starter的依赖方式,可以把相应需要依赖的包一起依赖到项目中,而不像传统的Spring 需要各自依赖包。
如在spring-boot中web模块,在传统的Spring配置中需要依赖 org.springframework spring-web 等web服务的包,在spring-boot中,只需要依赖spring-boot-starter-web 就能把相应的包一并依赖进来,极大的简化了配置。

补充

上面讲解了可以从 http://start.spring.io 中直接构建spring-boot项目
下面讲解直接在IntelliJ IDEA中构建spring-boot项目

1. 打开 IDEA ,新建项目

new project.png

2. 选择Spring Initializr 并在 Choose Initializr Service URL 填入 https://start.spring.io ,点击Next

spring i.png

3. 填入Group Artifact 等相关信息,点击Next

create.png

4. 选择你需要依赖的模块,点击Next

dep.png

5. 点击Finish即可

版权声明:本文为博主原创文章,转载请注明出处。

转载于:https://www.cnblogs.com/magicalSam/p/7171716.html

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

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

相关文章

python代码编码成jni_python 设置文件编码格式的实现方法

如果要在python2的py文件里面写中文&#xff0c;则必须要添加一行声明文件编码的注释&#xff0c;否则python2会默认使用ASCII编码。(python3已经没有这个问题了&#xff0c;python3默认的文件编码是UTF-8)必须将编码注释放在第一行或者第二行,一般来说&#xff0c;Python文件的…

Entity Framework context per request

原文发布时间为&#xff1a;2011-09-24 —— 来源于本人的百度文章 [由搬家工具导入]http://www.blog.cyberkinetx.com/2011/05/15/entity-framework-context-per-request/Are you still using the?1234using(DBContext context newDBContext()){ ..}way of accessing the d…

Java commit()_Java XAResource.commit方法代码示例

import javax.transaction.xa.XAResource; //导入方法依赖的package包/类public void testSuspendableTx() throws Exception {if (!versionMeetsMinimum(5, 0)) {return;}Connection conn1 null;MysqlXADataSource suspXaDs new MysqlXADataSource();suspXaDs.setUrl(BaseTe…

python如何优雅判断类型

http://note.youdao.com/noteshare?id6f3a7963efc57b5d0b1c712654d100c6转载于:https://www.cnblogs.com/taiyang-li/p/7190195.html

java网络io_彻底搞懂Java的网络IO

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼java.io包基于流模型实现&#xff0c;提供File抽象、输入输出流等IO的功能。交互方式是同步、阻塞的方式&#xff0c;在读取输入流或者写入输出流时&#xff0c;在读、写动作完成之前&#xff0c;线程会一直阻塞。java.io包的好处是…

1. 在虚拟机中 添加内容

步骤&#xff1a; 1. 找到要添加的内容&#xff0c;按住 ctrl c 复制 &#xff0c;例如&#xff1a;复制 飞秋 2. 打开 虚拟机&#xff0c;找到 要复制文件的位置。 3. 将 复制的文件添加到 共享文件夹下面。 4. 打开虚拟机&#xff0c;安装飞秋 5&#xff0c; 最后就完成了…

JavaScript设计模式-10.工厂模式实例xhr

1 <!DOCTYPE html>2 <html>3 <head>4 <meta charset"UTF-8">5 <title>Javascript高级语法10-工厂模式实例xhr</title>6 </head>7 <body>8 <script>9 //接口…

java web scala_spring boot+scala编写web接口

本人是Java开发者&#xff0c;有面向对象的基础&#xff0c;而Scala也是面向对象的语言&#xff0c;学习后可快速入门。通过学习Scala的面向对象(和java面向对象类似)、Scala的高级函数(map,reduce等&#xff0c;和Java8中的stream编程类似)、Scala的隐式转换(在Java中可通过sp…

java对象引用出错_上传图片错误:尝试在空对象引用上调用虚拟方法’java.lang.String android.net.Uri.getLastPathSegment()’...

我有“用相机捕获图像”的问题,并将其存储到Firebase中.我认为该代码是正确的,因为它可以与“从图库中选择图像”一起使用.捕获完图像后,该应用程序停止了,并且没有存储在数据库中.我认为这对于android M和N是个问题.我只是看到其他类似的问题,但它们对我不起作用.我为此寻求帮…

数组的运用

一、数组的概念以及定义&#xff1a; 1、 数组是存储同一种数据类型多个元素的集合&#xff0c;也可以看作是一个容器。 2、数组既可以存储基本数据类型&#xff0c;也可以存储引用数据类型。 二、一维数组&#xff1a; 1、一维数组的定义&#xff1a; 数据类型 [ ] 数组名 ne…

java小应用_java小应用

第一次使用简书记笔记&#xff0c;主要目的是为了加深印象&#xff0c;方便忘记时及时翻看。hello.java代码如下&#xff1a;import java.applet.Applet;import java.awt.*;public class hello extends Applet{private Font f1;public void init(){f1 new Font("宋体&quo…

POJ 2288 Islands and Bridges(状压dp)

http://poj.org/problem?id2288 题意&#xff1a; 有n个岛屿&#xff0c;每个岛屿有一个权值V&#xff0c;一条哈密顿路径C1&#xff0c;C2&#xff0c;...Cn的值为3部分之和&#xff1a; 第1部分&#xff0c;将路径中每个岛屿的权值累加起来&#xff1b;第2部分&#xff0c;对…

java做橡皮擦效果_HTML5 canvas橡皮擦擦拭效果

这是一款HTML5 canvas橡皮擦擦拭效果。该效果通过canvas来制作遮罩层和擦拭用的橡皮擦&#xff0c;用户可以通过移动鼠标来移除遮罩层&#xff0c;效果非常炫酷。因为发代码有时会排版混乱&#xff0c;所以先发图演示了。源码已经打包好了&#xff0c;想学习的朋友可以下载练习…

web前端开发面试题(答案)

1.xhtml和html有什么区别&#xff1f; HTML是一种基本的WEB网页设计语言&#xff0c;XHTML是一个基于XML的置标语言最主要的不同&#xff1a;XHTML 元素必须被正确地嵌套。XHTML 元素必须被关闭。标签名必须用小写字母。XHTML 文档必须拥有根元素。 2.行内元素有哪些?块级元素…

mysql to mssql_MysqlToMsSql

MysqlToMsSql是一款简单易用的数据库迁移工具&#xff0c;这款软件功能强大&#xff0c;可以帮助用户将MySQL数据库内容转移到msSQL数据库中&#xff0c;采用可视化操作&#xff0c;支持预览&#xff0c;方便用户查看数据库&#xff0c;实用性强&#xff0c;有需要的用户快来下…

java延迟覆盖_高效Java第九条覆盖equals时总要覆盖hashCode

原标题&#xff1a;高效Java第九条覆盖equals时总要覆盖hashCode高效Java第九条覆盖equals时总要覆盖hashCode在每个覆盖了equals方法的类中&#xff0c;也必须覆盖hashCode方法。否则会导致该类无法与基于散列的集合一起正常运作。 hashCode约定在应用程序的执行期间&#xff…

原生js简单实现双向数据绑定原理

根据对象的访问器属性去监听对象属性的变化&#xff0c;访问器属性不能直接在对象中设置&#xff0c;而必须通过 defineProperty() 方法单独定义。 访问器属性的"值"比较特殊&#xff0c;读取或设置访问器属性的值&#xff0c;实际上是调用其内部特性&#xff1a;get…

Flyweight Design Pattern 共享元设计模式

就是利用一个类来完毕多种任务&#xff0c;不用每次都创建一个新类。 个人认为这个设计模式在C里面。好像能够就使用一个函数取代&#xff0c;利用重复调用这个函数完毕任务和重复利用这个类&#xff0c;好像差点儿相同。 只是既然是一个设计模式&#xff0c;那么就使用类来完毕…

java中write方法报错_Java中管道报错:Write end dead

今天看了下关于管道的通信&#xff0c;Java中的管道只能在同一进程的不同线程间通信。今天测试两个线程进行通信发现报错。下面是我测试的代码。package com.wpl.testIO;import java.io.IOException;import java.io.PipedInputStream;import java.io.PipedOutputStream;public …

Linux课堂笔记-第二天

Shell简介 在Linux系统中&#xff0c;shell是最常用程序&#xff0c;作用侦听用户命令&#xff0c;启动命令所指定的进程并将结果返回给用户。他还是一种程序设计语言&#xff0c;是系统维护时的重要工具。 两部分组成&#xff0c;#为命令行提示符&#xff1b;#为超级用户&…