写在前面:半年工作经验的Java程序员一枚,奈何公司用的是自研的Web框架和RPC框架,本着good good study,day day up的精神和为以后发展的考虑觉得自己需要学点开源的东西,写的文章主要是自己的认识和踩过的坑,如果觉得我哪里写的不正确欢迎指教。
一.本文介绍
首先在阅读这篇文章前我要先说一下学习Spring Boot需要的基础,首当其充需要有Java基础,倒是没必要精通,但起码要知道继承封装多态,或是equals和==有什么区别(==对于基本类型来说比较的是值,对于引用类型比较的是内存地址,两个相同的对象即使属性值都一样但内存地址可能也不是一样的;equals如果不重写的话和==是一样的,String、Integer等对equals进行了重写比较的也是值)。其次就是Maven了,Maven作为项目管理工具最主要是对项目依赖关系的管理,Maven出现之前一个Java项目需要把各种jar包放到项目中,这就会导致项目本身臃肿或者出现难以解决的版本冲突,Maven通过groupId、artifactId、version作为一个条件唯一确定一个需要的jar包。最后如果你用过Spring那是极好的了,因为Spring Boot本着"约束大于配置"的理念就是对Spring的进一步封装,没用过也没关系因为Spring Boot使用起来容易上手。
二.为什么使用Spring Boot
JavaWeb项目的开发由最初的Servlet+Jsp到后来Spring的出现可谓是一大进步,但Spring复杂的配置同样让人头疼,Spring Boot主要依赖一个配置文件就可以完成Web项目启动,而且不需要依赖外部的Web容器或插件就可以运行,五分钟足够用Spring Boot写一个Hello World出来了。Spring Boot让开发人员不必把精力浪费在框架搭建上而是专注于业务的开发,我认为这是最大的一点好处,当然我觉得越简单的东西可能坑也越多,前面说过Spring Boot是基于“约束大于配置”,如果不遵循约束又不了解Spring Boot的底层实现就会出一些莫名其妙的问题,我已经踩过一些坑了。
三.开始第一个Spring Boot的Hello World
我用的是IDEA作为开发工具,一般创建Spring Boot项目首先可以从官网直接下载模板使用,或者是IDEA的Spring initilalizr功能(这个需要*),不过我觉得没有这个必要,直接建一个Maven项目把Spring Boot相关的依赖加进去就好了。
1.先新建一个Maven项目
输入GroupId、ArtifactId后直接点Finish就好了
2.我们要加入Spring Boot的相关依赖
<?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>cn.test</groupId>
<artifactId>first</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- Spring Boot引入的依赖,提供了一些默认配置 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
<relativePath/>
</parent>
<dependencies>
<!-- 支持Web需要引入的依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies> </project>
只需要这两个依赖就能够支持最简单的Web功能,现在暂时还不用使用配置文件(以后连数据库或者支持输出日志到文件再使用)。整个demo如下:
package cn.test;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
package cn.test.controller; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; @RestController
public class TestController { @RequestMapping("/test")
public String test(){
return "Spring Boot Demo";
}
}
3.运行DemoApplication里的Main函数输出如下日志:
使用了内置的Tomcat并启动了8080端口,访问http://localhost:8080/test效果如下:
至此一个最简单的基于Spring Boot的demo已经完成了,说一下我遇到的坑点:
- DemoApplication作为Spring Boot的启动类必须放在某个包下否则会报错,并且Spring Boot会递归扫描DemoApplication所在包下的文件
- DemoApplication里的@SpringBootApplication是Spring Boot启动的关键注解必不可少
- TestController里的@RestController注解的作用有两个,首先是把TestController这个类里的标了@RequestMapping注解的方法暴露出去让你在地址栏里敲对应的URL能访问到,其次就是把返回的数据以字符串形式展示。
- @RequestMapping注解就是规定一个标识,并把标识与方法绑定
四.总结
到这里我们已经有一个基于Spring Boot的Web框架了,如果用过Spring的话可以看到实现同样的功能Spring Boot远比Spring要简单的多,这其中的关键第一个是spring-boot-starter-parent这个依赖,第二个是@SpringBootApplication这个启动注解,后续会把Spring Boot与Mybatis相结合实现简单的增删改查,与Swagger2相结合自动生成接口文档。
Spring Boot初识(1)-了解Spring Boot的更多相关文章
-
Spring Boot初识(2)- Spring Boot整合Mybaties
一.本文介绍 首先读这篇文章之前如果没有接触过Spring Boot可以看一下之前的文章,并且读这篇文章还需要你至少能写基本的sql语句.我在写这篇文章之前也想过到底是选择JPA还是Mybaties作 ...
-
【Spring Boot&;&;Spring Cloud系列】Spring Boot初识
项目代码地址:https://github.com/AndyFlower/Spring-Boot-Learn/tree/master/Spring-boot-helloworld 一.Spring B ...
-
Spring Boot初识
今天准备开一个新系列springboot,springboot结束后会更新springcloud,想要学会springcloud先学springboot吧.以后springboot和hadoop轮流更 ...
-
spring cloud教程之使用spring boot创建一个应用
<7天学会spring cloud>第一天,熟悉spring boot,并使用spring boot创建一个应用. Spring Boot是Spring团队推出的新框架,它所使用的核心技术 ...
-
Spring Boot——2分钟构建spring web mvc REST风格HelloWorld
之前有一篇<5分钟构建spring web mvc REST风格HelloWorld>介绍了普通方式开发spring web mvc web service.接下来看看使用spring b ...
-
【Spring】关于Boot应用中集成Spring Security你必须了解的那些事
Spring Security Spring Security是Spring社区的一个*项目,也是Spring Boot官方推荐使用的Security框架.除了常规的Authentication和A ...
-
[转]Spring Boot——2分钟构建spring web mvc REST风格HelloWorld
Spring Boot——2分钟构建spring web mvc REST风格HelloWorld http://projects.spring.io/spring-boot/ http://spri ...
-
Springboot(一):使用Intellij中的Spring Initializr来快速构建Spring Boot工程
使用Intellij中的Spring Initializr来快速构建Spring Boot工程 New---Project 可以看到图所示的创建功能窗口.其中Initial Service Url指向 ...
-
spring boot 系列之四:spring boot 整合JPA
上一篇我们讲了spring boot 整合JdbcTemplate来进行数据的持久化, 这篇我们来说下怎么通过spring boot 整合JPA来实现数据的持久化. 一.代码实现 修改pom,引入依赖 ...
随机推荐
-
python面向对象
1.概念 类:(class):具有相同属性和方法的对象的集合.用来定义该集合中每个对象所共有的属性和方法.对象是类的实例. 方法:类中定义的函数. 实例化:创建一个类的实例,类的具体对象. 对象:通过 ...
-
fork()详解
参照: http://blog.csdn.net/jason314/article/details/5640969 http://coolshell.cn/articles/7965.html
-
纯代码添加约束条件(Auto Layout)
Auto Layout 是一种基于约束的.描述性的布局系统.也就是使用约束条件来描述布局,View的Frame会根据这些描述来进行计算. 在iOS6.0以后加入了一个新类: NSLayoutConst ...
-
Android把图片保存到SQLite中
1.bitmap保存到SQLite 中 数据格式:Blob db.execSQL("Create table " + TABLE_NAME + "( _id INTEGE ...
-
201521123017 《Java程序设计》第11周学习总结
1. 本周学习总结 2. 书面作业 Q1.互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) 1.1 除了使用synchronized修饰方法实现互斥同步访问,还有什么办法实现互斥同步 ...
-
mysql - Truncated incorrect DOUBLE value: &#39;undefined&#39;
mysql - Truncated incorrect DOUBLE value: 'undefined' 我是怎么遇到这个问题的? 我要从多个表里,查询统计数据,保存到统计表里,需要执行下面这种结构 ...
-
C++实验五
#include <iostream> #include <vector> #include <string> using namespace std; // 函数 ...
-
蒙特&#183;卡罗方法(Monte Carlo method)
蒙特·卡罗方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法.是 ...
-
spring源码分析系列 (1) spring拓展接口BeanFactoryPostProcessor、BeanDefinitionRegistryPostProcessor
更多文章点击--spring源码分析系列 主要分析内容: 一.BeanFactoryPostProcessor.BeanDefinitionRegistryPostProcessor简述与demo示例 ...
-
【SQL】SQL存储过程相关当前理解。(@temp=……)
1.下图左侧红框中的是SQL的存储过程,是程序同SQL之间互相调用的函数.——这里先作为了解不做深入研究. 比如客户通过ATM提款机取200元钱,程序中提交取200元钱操作,后续可能会进入SQL进行一 ...