文章目录

  • 一、SpringBoot入门
    • 1. SpringBoot简介
    • 2.微服务
    • 3.Spring Boot 的基础知识
    • 4.环境约束
    • 5.环境配置
      • maven设置
      • IDEA设置
  • 二、创建一个HelloWorld项目
    • 1.创建maven工程
    • 2.导入Spring Boot相关依赖
    • 3. 编写一个主程序->启动Spring Boot
    • 4. 编写相关的Controller、Service
    • 5. 运行程序
    • 6. 简化部署
    • 7.细节探究
      • 1.pom.xml文件
        • 1.父项目
        • 2.启动器
        • 3. 主程序类、主入口类
          • @SpringBootApplication
          • @SpringBootConfiguration
          • **@EnableAutoConfiguration**
          • @Import({AutoConfigurationImportSelector.class})
    • 8. 使用Spring Initializer快速创建Spring Boot项目

一、SpringBoot入门

1. SpringBoot简介

简化Spring应用开发一个框架;

整个Spring技术栈的一个大整合

J2EE开发的一站式解决方案

2.微服务

2014,martin fowler

微服务:架构风格(服务微化)

一个应用应该是一组小型服务;可以通过HTTP的方式进行互通;

每一个功能元素最终都是一个可独立替换和独立升级的软件单元,由点成网,可以精准对点的修改、删除、添加

3.Spring Boot 的基础知识

Spring框架的使用经验

熟练使用Maven进行项目构建和依赖管理

熟练使用Eclipse或者IDEA

4.环境约束

-jdk1.8

-maven:maven 3.3.99

-IDEA2018

-Spring Boot 2.2.5

5.环境配置

spring-boot官方文档:文档地址

maven设置

在maven中的setting.xml配置文件的profiles标签添加

<profile><id>jdk-1.8</id><activation><activeByDefault>true</activeByDefault><jdk>1.8</jdk></activation><properties><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion></properties></profile>

IDEA设置

在 File-> settings ->搜索框中搜索“maven”->对以下三个变量进行修改

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wdfXffXJ-1586584453439)(E:\Notes\SpringBoot\配置maven.png)]

二、创建一个HelloWorld项目

一个功能:浏览器发送hello请求,服务器接受请求并处理,相应Hello World字符串

1.创建maven工程

流程:project -> new project -> maven -> 设置自己的域名和项目名,我的域名是:com.ideal,项目名是:spring-boot-01-helloworld->选择存储的位置->点击右下角的Enable Auto-Import(在pom.xml中写入一些依赖,编译器会自动导入相关依赖文件)

2.导入Spring Boot相关依赖

在pom.xml写入一些依赖,以2.2.5的版本为例

 <!--这是继承一个父项目--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.5.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><!--web依赖--><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies>

3. 编写一个主程序->启动Spring Boot

/*** @ClassName: HelloWorldMainApplication* @description:这是一个主程序* @author: FFIDEAL* @Date: 2020/4/8 17:22*//*
* 标注 @SpringBootApplication 来标注一个主程序类,说明这是一个Spring Boot应用
* */
@SpringBootApplication
public class HelloWorldMainApplication {public static void main(String[] args) {//Spring应用启动SpringApplication.run(HelloWorldMainApplication.class,args);}
}

4. 编写相关的Controller、Service

编写Controller类,将浏览器的hello请求发送后返回一串hello world

/*这是一个请求类*/
@Controller
public class HelloController {@ResponseBody /*把helloworld写入浏览器*/@RequestMapping("/hello") /*这是一个接受浏览器hello请求*/public String hello(){return "Hello World";}
}

5. 运行程序

http://localhost:8080/hello

6. 简化部署

在pom.xml写入一个依赖,这个插件可以将应用打包成一个可执行的jar包。

<!--这个插件可以将应用打包成一个可执行的jar包--><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>

之后再Maven Projects中的Lifcycle保重的package包,这样就可以到处jar包了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2HVJbZ3G-1586584453441)(E:\Notes\SpringBoot\打包jar.png)]

之后在运行这个jar包,也完成了部署

7.细节探究

1.pom.xml文件

1.父项目
  <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.5.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><!--上面代码的父项目是以下代码,真正管理SpringBoot的所有依赖版本-->
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.2.5.RELEASE</version><relativePath>../../spring-boot-dependencies</relativePath></parent>
<!--在artifictId点进去就可以看到以下版本的限制--><properties><!--一些依赖版本的限制,包含了几乎所有场景需要的依赖版本--><activemq.version>5.15.11</activemq.version><antlr2.version>2.7.7</antlr2.version><appengine-sdk.version>1.9.78</appengine-sdk.version><artemis.version>2.10.1</artemis.version><aspectj.version>1.9.5</aspectj.version><assertj.version>3.13.2</assertj.version><atomikos.version>4.0.6</atomikos.version><awaitility.version>4.0.2</awaitility.version>....</properties>

Spring Boot的版本仲裁中心:以后我们导入依赖默认是不需要写版本的,但是没有在其中的自然还是要写版本的

2.启动器
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--点击artifactId连接,发现其中又有一些它的父依赖-->

spring-boot-starter-web:spring-boot-start是spring-boot场景启动器,帮我们导入了web模块正常运行所依赖的组件

Spring Boot将所有功能场景都抽取出来了,做成一个个的starters(启动器,相关启动器地址),只需要在项目中导入这些starter相关场景的所有依赖都会导入进来。要什么功能就导入什么场景的启动器(如邮件开发、web等等,都可以参照文档)

3. 主程序类、主入口类
/*** @ClassName: HelloWorldMainApplication* @description:这是一个主程序* @author: FFIDEAL* @Date: 2020/4/8 17:22*//** 标注 @SpringBootApplication 来标注一个主程序类,说明这是一个Spring Boot应用
* */@SpringBootApplicationpublic class HelloWorldMainApplication {public static void main(String[] args) {//Spring应用启动SpringApplication.run(HelloWorldMainApplication.class,args);}}
@SpringBootApplication

:Spring Boot应用标注在某个类上说明这个类是Spring Boot的主配置类,Spring Boot就应该运行这个类的main方法来启动Spring Boot应用

//查看SpringBootApplication的底层,我们可以看到这样一些注解
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = {@Filter(type = FilterType.CUSTOM,classes = {TypeExcludeFilter.class}
), @Filter(type = FilterType.CUSTOM,classes = {AutoConfigurationExcludeFilter.class}
)}
)
public @interface SpringBootApplication {
@SpringBootConfiguration

​ Spring Boot的配置类;标注在某个类上,表示这是一个Spring Boot的配置类

@Configuration:配置类上来标注这个注解;

​ 配置类 ----- 配置文件;配置类也是容器中的一个组件;@Component

@EnableAutoConfiguration

​ 开启自动配置功能;以前我们需要配置的东西,Spring Boot帮我们自动配置;@EnableAutoConfiguration告诉Spring Boot开启自动配置功能;这样自动配置才能生效;

//进入@EnableAutoConfiguration的底层,我们可以看到如下的注解
@AutoConfigurationPackage
@Import({AutoConfigurationImportSelector.class})
public @interface EnableAutoConfiguration {

​ @AutoConfigurationPackage:自动配置包

​ @Import(AutoConfigurationPackage.Registrar.class):Spring的底层注解@import,给容器导入一个组件,导入的的组件由AutoConfigurationPackage.Registrar.class决定

​ 将主配置类的(即@SpringBootApplication标注的类)的所在包及下面所有子包里面的所有组件扫描到Spring容器;

@Import({AutoConfigurationImportSelector.class})

​ AutoConfigurationImportSelector:导入一些组件的选择器;

​ 将所有需要导入的组件以全类名的方式返回,这些组件会就会被添加到容器中;

​ 会给容器中导入非常多的自动配置类(xxxAutoConfiguration);就是给容器中导入这个场景需要的所有组件,配置好这些组件

--------------可以学习Spring注解版,了解相关注解--------------------

8. 使用Spring Initializer快速创建Spring Boot项目

IDE都支持使用Spring的项目创建向导快速创建一个Spring-Boot项目,流程如下

选择我们需要的模块,向导会联网创建Spring-Boot

默认生成的Spring Boot:

  • 主程序已经创建好了,我们只需要创建自己的逻辑

  • resource文件夹中目录结构

    • static:保存所有的静态资源;js|css|images;

    • templates:保存所有的模板页面;Spring-Boot默认jar包使用嵌入式的Tomcat,默认不支持JSP页面;可以使用模板引擎(freemarker、thymeleaf);

    • application.properties:Spring-Boot应用的配置文件,可以修改一些默认设置

      #重新设置端口号
      server.port=8080
      

ng Boot:

  • 主程序已经创建好了,我们只需要创建自己的逻辑

  • resource文件夹中目录结构

    • static:保存所有的静态资源;js|css|images;

    • templates:保存所有的模板页面;Spring-Boot默认jar包使用嵌入式的Tomcat,默认不支持JSP页面;可以使用模板引擎(freemarker、thymeleaf);

    • application.properties:Spring-Boot应用的配置文件,可以修改一些默认设置

      #重新设置端口号
      server.port=8080
      

【Spring-Boot】【入门 01】第一个 Spring Boot 程序相关推荐

  1. Spring学习笔记:第一个Spring Boot程序HelloWorld

    Spring学习笔记:第一个Spring Boot程序HelloWorld 一.跟着 Spring 了解技术趋势 1.看看 Spring 5.x 的改变暗示了什么 2.Spring Boot 和 Sp ...

  2. Spring从入门到精通--(1)Spring框架概述

    Spring从入门到精通–(1)Spring框架概述 作者:进击攻城狮 个人主页:欢迎访问我的主页 首发时间:2022年8月2日星期二 订阅专栏:Spring入门到精通 个人信条:星光不问赶路人,岁月 ...

  3. 使用 Spring Boot CLI 运行第一个Spring boot程序

    简介 Spring Boot CLI是Spring Boot的命令行界面.它可以用来快速启动Spring.  它可以运行Groovy脚本.  Spring Boot CLI是创建基于Spring的应用 ...

  4. Spring Boot (1) 构建第一个Spring Boot工程

    Spring boot简介 spring boot是spring官方推出的一个全新框架,其设计目的是用来简化新spring应用的初始搭建以及开发过程. Spring boot特点 1.化繁为简,简化配 ...

  5. Spring Boot入门(01):Spring Boot的奋斗成长史

    作者:bug菌 博客:CSDN.掘金.infoQ.51CTO等 简介:CSDN/阿里云/华为云/51CTO博客专家,博客之星Top30,掘金年度人气作者Top40,51CTO年度博主Top12,掘金/ ...

  6. Spring Boot入门三:创建Spring Boot项目;(包括【Spring 官网start.spring.io】方式,【IDEA集成的Spring Initializr】方式)

    说明: (1)介绍了两种创建Spring Boot项目的方式:[Spring 官网start.spring.io]方式,[IDEA集成的Spring Initializr]方式: (2)更推荐使用[I ...

  7. Spring Boot入门(05):了解Spring Boot的starter入门 | 超级详细,建议收藏

    1. 前言

  8. Spring Security 入门(1-3-2)Spring Security - http元素 - intercept-url配置

    http元素下可以配置登录页面,也可以配置 url 拦截. 1.直接配置拦截url和对应的访问权限 <security:http use-expressions="false" ...

  9. Spring Security 入门(3-11)Spring Security 的使用-自定义登录验证和回调地址

    配置文件 security-ns.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmln ...

  10. Spring Security入门(3-4)Spring Security 异常处理、异常传递和异常获取

最新文章

  1. [LeetCode]Contains Duplicate III
  2. python开发需要掌握的知识_(深度学习)Python必须掌握基础知识,python,必会,知识点...
  3. HDU3338 Kakuro Extension(最大流+思维构图)
  4. linux之vsftpd配置
  5. Android APK反编译就这么简单 详解(图文详解)
  6. 跑步碰撞大数据,走进悦跑圈的数据“大观园”
  7. 直播 | AAAI 2021最佳论文:比Transformer更有效的长时间序列预测
  8. 十六进制数转换成float类型数据数据的经典代码
  9. net 控制台 定时_.NET Core实现基于Quart.Net的任务管理
  10. 阿米洛无法打开蓝牙模式_企业为什么要学习阿米巴模式?
  11. HDU- 1754 I Hate It
  12. 分布式消息流平台:不要只想着Kafka,还有Pulsar
  13. php跳过代码,PHP利用continue实现跳过本次循环中剩余代码的注意点
  14. 使用Electron将Web项目打包成windows桌面应用
  15. 五大列级庄_酒庄拉菲古堡Chateau Lafite Rothschild, 波尔多五大一级庄之首
  16. JAVA:实现crc校验算法(附完整源码)
  17. EasyPlayer播放海康大华RTSP流时RTSPClient客户端连接兼容问题的解决
  18. 英雄联盟英雄技能总结
  19. 如何在SuperMap iDesktop制作卫星地图
  20. SpringBoot整合定时任务和邮件发送(邮箱 信息轰炸 整蛊)

热门文章

  1. dedecms5.7 联动类型无法显示
  2. 也议GetLastKnownLocation!!(独家理解)
  3. C++ Primer 5th笔记(chap 18 大型程序工具) 多重继承与虚继承
  4. PKI/CA (4)根CA信任模型“概述”
  5. ECC椭圆曲线算法(3)加密解密过程
  6. 区块链BaaS云服务(11)招商银行ABS区块链平台
  7. 攻防世界Reverse第十一题csaw2013reversing2
  8. Linux常用的基本命令head、tail、tar、grep、date、cal(二)
  9. [HOW TO]-官网拉取Trusty-TEE的代码
  10. optee中关于异常向量表、中断等的深入思考