SpringBoot学习笔记(一)入门简介
一、SpringBoot 入门简介
整体讲解内容概况:

1.1 简介
简化Spring应用开发的一个框架;
整个Spring技术栈的一个大整合;
J2EE开发的一站式解决方案。

Spring Boot通过整合Spring整个技术栈,来简化企业级应用的开发。
Spring Boot自动配置。
优点:

1.2 微服务
微服务:架构风格
一个应用应该是一组小型服务;可以通过HTTP的方式进行互通;
单体应用:ALL IN ONE

微服务:每一个功能元素最终都是一个可独立替换、可独立升级的微化单元。

详细参照微服务文档https://blog.csdn.net/jason_wang1989/article/details/88321698
1.3 Spring Boot HelloWorld
一个功能:
浏览器发送hello请求,服务器接受请求并处理,响应HelloWorld字符串。
1、 创建一个Maven工程:
选择Maven工程,选择jdk1.8,创建后点击右下角的Enable Import Changes。

2、 导入Spring Boot相关依赖
3、编写一个主程序:启动Spring Boot 应用
package com.ckh;
/*
* @SpringBootApplication来标注这是一个主程序类,说明这是一个SpringBoot应用
* */
@SpringBootApplication
public class SpringBootApplication {
public static void main(String[] args) {
//spring 应用启动起来
SpringApplication.run(SpringBootApplication,args);
}
}
4、编写相关的Controller、Service
package com.ckh.controller;
@Controller
public class HelloController {
@ResponseBody
@RequestMapping("/hello")
public String hello(){
return "Hello World!";
}
}
5、运行主程序测试
6、简化部署
<!--这个插件可以将应用打包成一个可执行的jar包-->
<build>
<plugins>
<plugin>
<groupId>org.spring.framework.boot</groupId>
<artifactId>spring-boot-maven-project</artifactId>
</plugin>
</plugins>
</build>
点package即可打包成jar包,保存到target中。

进入jar包目录,执行java -jar命令。

1.4 Hello World探究
1、POM文件
1、父项目
<parent>
<groupId>org.spring.framework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9 RELEASE</version>
</parent>
Spring Boot 的版本仲裁中心;
以后我们导入依赖,默认是不需要写版本的;(没有在dependencies中管理的依赖自然要写上相应的版本)
2、启动器
<dependency>
<groupId>org.spring.framework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
spring-boot-starter-web:
spring-boot-starter: spring-boot场景启动器;帮我们导入了web模块正常运行所需要的组件;
Spring Boot 将所有的功能场景都抽取出来,做成一个个的starters(启动器),只需要在项目里面引入相关的依赖,要用什么功能就只需要导入相应的启动器依赖。
2、主程序类、主入口类
package com.ckh;
/*
* @SpringBootApplication来标注这是一个主程序类,说明这是一个SpringBoot应用
* */
@SpringBootApplication
public class SpringBootApplication {
public static void main(String[] args) {
//spring 应用启动起来
SpringApplication.run(SpringBootApplication.class,args);
}
}
@SpringBootApplication注解:表明该类为主程序类,是整个应用的入口类,运行其中的main方法,将应用启动起来。
点开,发现这是一个组合注解:

@SpringBootConfiguration: Spring boot 的配置类;
标注在某个类上,表示这是一个Spring boot的配置类;
@Configuration:配置类上来标注这个注解;
配置类---配置文件;配置类也是容器中的组件
@EnableAutoConfiguration:开启自动配置功能;
点开如下:

@AutoConfigurationPackage:自动配置包
@Import(AutoConfigurationPackage.Registrar.class);
Spring 的底层注解@import,给容器中导入一个组件;导入的组件由
AutoConfigurationPackage.Registrar.class决定。
将主配置类(@SpringBootApplication标注的类)所在包下面的所有子包里面的所有子类扫描到Spring容器中。
@Import(EnableAutoConfigurationImportSelector.class)
给容器导入组件:
EnableAutoConfigurationImportSelector.class:自动配置导入包的选择器
将所有需要导入的组件以全类名的方式返回;这些组件就会被添加到容器中。
会给容器中导入非常多的自动配置类:就是给容器中导入这个场景需要的所有组件,并配置好这些组件。

1.5 使用Spring Initializer快速地创建SpringBoot项目
1、初始项目的步骤
IDEA都支持使用Spring创建向导快速地创建一个springboot项目。
注意!!使用向导创建一定要连上网!!
1、New Project,点击Spring Initializer,选择jdk的版本。

2、填写包名、和项目名。
注意我这里包名里的“helloWorld”写错了,不能有大写字母!!

3、这里都默认就好,点击Finish即可。

4、创建完成后,右下角会弹出一个小框,点击Enable Auto-Import,以后pom.xml文件修改时就会自动地导入依赖。
如果没有出现这个小框框,那么右键点击pom.xml文件-->Maven-->Reimport.

至此,一个初始版本地SpringBoot项目创建好了。
5、点击主程序,启动运行:

6、打开控制台窗口,若出现这两行表示运行成功:

2、编写Controller层
首先,在主程序类的包下,新建一个package--controller,再创建一个类---HelloController。

package com.ckh.springboot01helloworldquick.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class HelloController {
/*
* @ResponseBody注解:表示该方法return的内容直接返回给浏览器
* @RequestMapping("/hello")注解:表示该方法接收浏览器“/hello”的请求
* */
@ResponseBody
@RequestMapping("/hello")
public String hello(){
return "Hello,World!";
}
//RESTAPI的方式
}
还可以有另一种写法:
package com.ckh.springboot01helloworldquick.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
/*
* 在类上面加@ResponseBody注解,表示整个类中方法的返回值都写回浏览器中。
* @RestController = @ResponseBody + @Controller
**/
//@ResponseBody
//@Controller
@RestController
public class HelloController {
/*
* @RequestMapping("/hello")注解:表示该方法接收浏览器“/hello”的请求
* */
@RequestMapping("/hello")
public String hello(){
return "Hello,World!";
}
//RESTAPI的方式
}
3、运行,浏览器中输入http://localhost:8080/hello即可访问。

3、总结
默认生成的Spring Boot项目:
主程序已经生成好了,我们只需要编写自己的逻辑;
resources文件夹中目录结构:
static:保存所有静态资源:js css images ;
templates:保存所有的模板页面;(Spring Boot默认jar包使用嵌入式的Tomcat,默认不支持JSP页面);可以使用模板引擎(freemarker、thymleaf);
application.properties:Spring Boot 应用的配置文件,可以更改默认配置。
SpringBoot学习笔记(一)入门简介的更多相关文章
- SpringBoot学习笔记<一>入门与基本配置
毕业实习项目技术学习笔记 参考文献 学习视频 2小时学会Spring Boot:https://www.imooc.com/learn/767 学习资料 SpringBoot入门:https://bl ...
- SpringBoot学习笔记(8):事物处理
SpringBoot学习笔记(8):事物处理 快速入门 在传统的JDBC事务代码开发过程中,业务代码只有一部分,大部分都是与JDBC有关的功能代码,比如数据库的获取与关闭以及事务的提交与回滚.大量的t ...
- SpringBoot学习笔记:Swagger实现文档管理
SpringBoot学习笔记:Swagger实现文档管理 Swagger Swagger是一个规范且完整的框架,用于生成.描述.调用和可视化RESTful风格的Web服务.Swagger的目标是对RE ...
- MongoDB学习笔记:快速入门
MongoDB学习笔记:快速入门 一.MongoDB 简介 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统.在高负载的情况下,添加更多的节点,可以保证服务器性能.M ...
- python学习笔记--Django入门四 管理站点--二
接上一节 python学习笔记--Django入门四 管理站点 设置字段可选 编辑Book模块在email字段上加上blank=True,指定email字段为可选,代码如下: class Autho ...
- C#.NET学习笔记1---C#.NET简介
C#.NET学习笔记1---C#.NET简介 技术qq交流群:JavaDream:251572072 教程下载,在线交流:创梦IT社区:www.credream.com -------------- ...
- WebSocket学习笔记——无痛入门
WebSocket学习笔记——无痛入门 标签: websocket 2014-04-09 22:05 4987人阅读 评论(1) 收藏 举报 分类: 物联网学习笔记(37) 版权声明:本文为博主原 ...
- SpringBoot学习笔记
SpringBoot个人感觉比SpringMVC还要好用的一个框架,很多注解配置可以非常灵活的在代码中运用起来: springBoot学习笔记: .一.aop: 新建一个类HttpAspect,类上添 ...
- Springboot学习笔记(六)-配置化注入
前言 前面写过一个Springboot学习笔记(一)-线程池的简化及使用,发现有个缺陷,打个比方,我这个线程池写在一个公用服务中,各项参数都定死了,现在有两个服务要调用它,一个服务的线程数通常很多,而 ...
随机推荐
- 百度2019校招Web前端工程师笔试卷(第二批)
一.linux系统下有多个文件目录,每个文件目录都有其独特的功能和作用 /bin 存放普通用户可以使用的指令. /usr 这个目录中包含了命令库文件和在通常操作中不会修改的文件,其地位类似Window ...
- [LC] 114. Flatten Binary Tree to Linked List
Given a binary tree, flatten it to a linked list in-place. For example, given the following tree: 1 ...
- python3下scrapy爬虫(第十卷:scrapy数据存储进mysql)
上一卷中我将爬取的数据文件直接写入文本文件中,现在我将数据存储到mysql中,我依然用的是pymysql,这个很麻烦建表需要在外面建 这次代码只需要改变pipyline就行 来 现在看下结果: 对比发 ...
- cs231n spring 2017 lecture7 Training Neural Networks II
1. 优化: 1.1 随机梯度下降法(Stochasitc Gradient Decent, SGD)的问题: 1)对于condition number(Hessian矩阵最大和最小的奇异值的比值)很 ...
- labview线程相关
两个结论. 1. 在 LabVIEW 上编写多线程程序非常方便,我们应该充分利用这个优势.一般情况下,编写程序时应当遵循这样的原则:可以同时运行的模块就并排摆放,千万不要用连线,顺序框等方式强 ...
- JavaScript小数转百分比
在浏览器的控制台操作0.28*100会得到28.000000000000004这样一个不太精确的值 进行转换 toPercent(point){ let str = Number(point * 10 ...
- JavaScript的数据类型有哪些?
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- application.properties和application.yml
1.application.properties 文件和 application.yml 文件优先级: 当同时存在时,那application.yml 只是个摆设. 2.yml文件的好处,天然的树状结 ...
- 吴裕雄--天生自然 R语言开发学习:回归(续三)
#------------------------------------------------------------# # R in Action (2nd ed): Chapter 8 # # ...
- 文本快速分类利器fasttext使用心得(踩坑之路)
fasttext是文本分类的一大利器,优点:快,嗷嗷快:缺点:暂未发现.但是我在使用其做文本分类时候还是遇到了挺多坑,今天先总结一个: 网上有人说设置训练参数的时候,ngrams设置大于2可以提高模型 ...
