Spring Boot初识(1)-了解Spring Boot
写在前面:半年工作经验的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功能(这个需要fanqiang),不过我觉得没有这个必要,直接建一个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,引入依赖 ...
随机推荐
- React-router4 第八篇 ReactCSSTransitionGroup 动画转换
https://reacttraining.com/react-router/web/example/animated-transitions 动画转换这么高级,其实是又引入了一个组件,没什么特别, ...
- docker 镜像存放路径的修改
可以通过在启动时使用--graph参数来指定存储路径. 或者使用systemd来管理服务, 就在/lib/systemd/system/docker.service中修改这一行: 1.ExecStar ...
- BZOJ1015或洛谷1197 [JSOI2008]星球大战
BZOJ原题链接 洛谷原题链接 发现正着想毫无思路,所以我们可以考虑倒着思考,把摧毁变成建造. 这样很容易想到用并查集来维护连通块,问题也变的很简单了. 建原图,先遍历一遍所有边,若某条边的两端点未被 ...
- android studio Error:Execution failed for task ':app:processDebugResources'. > com.android.ide.common.process.ProcessException: Failed to execute aapt
情况很奇怪 我是更新版本; 问题解决: clean project; 可能是编辑器有地方存有配置数据;
- .net 简单任务调度平台安装简要说明
.net 简单任务调度平台,用于.net dll,exe的任务的挂载,任务的隔离,调度执行,访问权限控制,监控,管理,日志,错误预警,性能分析等. 平台基于quartz.net进行任务调度功能开发,采 ...
- RQNOJ 2 开心的金明
一道基础的01背包,要是不明白可以自己搜一下背包九讲,自己刚开始数组开小了,题目看串了行,找了半天,小错还是要格外注意的. #include <iostream> #include < ...
- IPv6下网络编程socket, TCP和UDP例子,以及兼容IPV4和IPV6的类
一.TCP socket ipv6与ipv4的区别 服务器端源代码如下: #include <stdio.h> #include <stdlib.h> #include < ...
- Django Class Based View
本节内容 一 Class Based View 基于类的视图 1. 类的视图 View 2. 类的视图 TemplateView 3. 类的视图 login_required解决方法 二 ...
- Dynamic Programming | Set 1 (Overlapping Subproblems Property)
动态规划是这样一种算法范式:将复杂问题划分为子问题来求解,并且将子问题的结果保存下来以避免重复计算.如果一个问题拥有以下两种性质,则建议使用动态规划来求解. 1 重叠子问题(Overlapping S ...
- Spring之AOP由浅入深
1.AOP的作用 在OOP中,正是这种分散在各处且与对象核心功能无关的代码(横切代码)的存在,使得模块复用难度增加.AOP则将封装好的对象剖开,找出其中对多个对象产生影响的公共行为,并将其封装为一个可 ...