1.1 Spring Boot理解

  • Spring Boot来简化Spring应用开发,约定大于配置,去繁从简,just run就能创建一个独立的,产品级别的应用

  • 背景

    • J2EE笨重的开发、繁多的配置、低下的开发效率、 复杂的部署流程、第三方技术集成难度大。

  • 解决

    • “Spring全家桶”时代。

    • pring Boot =>  J2EE一站式解决方案

    • Spring Cloud => 分布式整体解决方案

  • 优点

    • 快速创建独立运行的Spring项目以及与主流框架集成

    • 使用嵌入式的Servlet容器,应用无需打成WAR包

    • starters自动依赖与版本控制

    • 大量的自动配置,简化开发,也可修改默认值

    • 无需配置XML,无代码生成,开箱即用

    • 准生产环境的运行时应用监控 – 与云计算的天然集成

  • 单体应用:ALL IN ONE

  • 微服务:martin fowler,一种架构风格(服务微化)

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

    • 微服务:每一个功能元素终都是一个可独立替换和独立升级的软件单元

1.2 统一开发环境

  • Maven配置-settings.xml中添加

<profile>  <id>jdk-1.8id>  <activation>    <activeByDefault>trueactiveByDefault>    <jdk>1.8jdk>  activation>  <properties>    <maven.compiler.source>1.8maven.compiler.source>    <maven.compiler.target>1.8maven.compiler.target>    <maven.compiler.compilerVersion>1.8maven.compiler.compilerVersion>  properties>profile>
  • IDEA配置使用外部Maven

1.3 SpringBoot-HelloWorld

  • 创建maven项目

  • 导入SpringBoot相关依赖

<parent>    <groupId>org.springframework.bootgroupId>    <artifactId>spring-boot-starter-parentartifactId>    <version>2.3.2.RELEASEversion>    <relativePath/> parent><dependencies>    <dependency>        <groupId>org.springframework.bootgroupId>        <artifactId>spring-boot-starter-webartifactId>    dependency>dependencies>
  • 创建主程序

/** * @SpringBootApplication:用来标注一个主程序类,说明这是一个SpringBoot应用 */@SpringBootApplicationpublic class HelloWorldMainApplication {    public static void main(String[] args) {        //Spring应用启动        SpringApplication.run(HelloWorldMainApplication.class,args);    }}
  • 编写相关的Controller,Service

@Controllerpublic class HelloController {    @ResponseBody    @RequestMapping("/hello")    public String hello(){        return "Hello World!";    }}
  • 启动主程序测试即可

  • 简化部署

    • pom.xml导入maven插件

<build>    <plugins>        <plugin>            <groupId>org.springframework.bootgroupId>            <artifactId>spring-boot-maven-pluginartifactId>        plugin>    plugins>build>
  • 将这个应用打成jar包

注意:打成的jar包中已经携带了嵌入式的tomcat服务器

  • jar包直接使用 java -jar 命令进行执行

1.4 HelloWorld细节 - 场景启动器(starter)

  • 探究POM文件 - 父项目

    • spring-boot-dependencies项目即是SpringBoot的版本仲裁中心,以后我们导入依赖默认是不需要写版本的。(没有在该父项目里管理的依赖还是要声明版本号)

<parent>    <groupId>org.springframework.bootgroupId>    <artifactId>spring-boot-starter-parentartifactId>    <version>2.3.2.RELEASEversion>    <relativePath/> parent><parent>  <groupId>org.springframework.bootgroupId>  <artifactId>spring-boot-dependenciesartifactId>  <version>2.3.2.RELEASEversion>parent>
  • 探究POM文件 - 导入的依赖

    • spring-boot-starter-web:帮我们导入了web模块正常运行所依赖的组件

<dependencies>    <dependency>        <groupId>org.springframework.bootgroupId>        <artifactId>spring-boot-starter-webartifactId>    dependency>dependencies>
  • 引申结论

    • Spring-boot-starter:SpringBoot场景启动器

    • SpringBoot将所有的功能场景都抽取出来做成了一个个的starters(启动器),只需要在项目里引入这些starter,相关场景的所有依赖都会导入进来。

1.5 HelloWorld细节  - 探究主程序(主入口)类 - 自动配置

  • @SpringBootApplication

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

  • @SpringBootConfiguration

    • SpringBoot的定义的注解,@SpringBootConfiguration继承自@Configuration,二者功能也一致,标注当前类是配置类,并会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到spring容器中,并且实例名就是方法名。

    • @Configuration

      • @SpringBootConfiguration继承自@Configuration

      • @Configuration是Spring定义的注解,用来表示当前类是一个配置类

      • 因@Configuration上标注有@Component,所以配置类也是容器中的一个组件

  • @EnableAutoConfiguration

    • 开启自动配置功能。以前需要我们配置的东西,SpringBoot会自动帮助我们配置。

  • @AutoConfigurationPackage

    • 自动配置包。其本身含义是将主配置类所在包及下面所有子包里面的所有组件扫描到Spring容器中

    • 进入后发现其上标注有@Import({Registrar.class}),@Import是Spring的底层注解,用于给容器中导入一个组件即AutoConfigurationPackage.Registrar.class。该组件实现了ImportBeanDefinitionRegistrar,用于手工指定具体导入哪些组件。

  • @Import({AutoConfigurationImportSelector.class})

    • AutoConfigurationImportSelector的selectImports方法会将所有需要导入的组件以全类名的方式返回,这些组件就会被加载到当前SpringBoot创建并使用的IoC容器中。

    • 这需要借助于Spring框架原有的一个工具类:SpringFactoriesLoader的支持,在AutoConfigurationImportSelector类中可以看到通过 SpringFactoriesLoader.loadFactoryNames()扫描所有jar包类路径下META‐INF/spring.factories,把扫描到的这些文件的内容包装成properties对象,从properties中获取到EnableAutoConfiguration.class类(类名)对应的值,然后把他们添加在容器中

  • 总结:

    • SpringBoot在启动的时候从类路径下的META-INF/spring.factories中获取到EnableAutoConfiguration.class类(类名)对应的值(当前Springboot版本一共127个自动配置类),将这些值作为自动配置类导入到容器中,自动配置生效开始进行自动配置工作。

    • J2EE的整体整合解决方案和自动配置都在spring-boot-autoconfigure.jar下

1.6 使用向导快速创建SpringBoot应用

  • IDEA:使用 Spring Initializer快速创建项目

    • IDE都支持使用Spring的项目创建向导快速创建一个Spring Boot项目;

    • 选择我们需要的模块;向导会联网创建Spring Boot项目;

    • 默认生成的Spring Boot项目特点:

      • 主程序已经生成好了,只需要我们写自己的逻辑即可

      • resources文件夹中目录结构

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

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

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

  • STS:使用 Spring Starter Project快速创建项目

maven springboot 除去指定的jar包_1. Spring Boot概述相关推荐

  1. maven springboot 除去指定的jar包_SpringBoot的运行机制

    SpringBoot打包机制 先看一眼spring-boot的maven插件打包后的target目录: 其中有一个.jar.original的文件,一个.jar文件,其中.jar.original才是 ...

  2. maven springboot 除去指定的jar包_Spring Boot打包瘦身 Docker 使用全过程 动态配置、日志记录配置...

    springBoot打包的时候代码和jar包打包在同一个jar包里面,会导致jar包非常庞大,在不能连接内网的时候调试代码,每次只改动了java代码就需要把所有的jar包一起上传,导致传输文件浪费了很 ...

  3. srtp项目中关于引入Maven仓库中指定版本jar包的一些问题

    文章目录 背景 问题 解决方案 打开Maven的搜索 搜索网址打开之后,直接将你想要查找的jar包全名输进去即可,类似于向下面这样. 指定之后仍然代码出错 背景 相信很多和我一样刚入门的新人对于另外一 ...

  4. 服务器jar包配置文件,spring boot加载第三方jar包的配置文件的方法

    前言 今天收到一封邮件,大概内容如下:spring boot鼓励去配置化,那么怎么将第三方jar包中的xml去配置化了? 下面,我们就以Quartz定时任务为例,单独对这个问题来进行说明,如何实现去配 ...

  5. springboot 创建地址_手把手教你Spring Boot入门开发

    前言:springboot如今在技术领域非常流行,不仅能够简化web项目的开发,提升开发效率,而且也是面试官最喜欢的问题之一,今天笔者对springboot做一个简要入门实例讲解,抛砖引玉. 1. S ...

  6. springboot基于mybatis扫描jar包中的controller、service、dao、xml

    springboot基于mybatis扫描jar包中的controller.service.dao.xml 最近有这样的需求,是将某个业务模块接口,比如新闻的接口模块 作为一个公共固定的模块,整个包括 ...

  7. java配置pom安装依赖包,Maven pom.xml 添加本地jar包依赖以及打包方法

    Maven项目打包时,如果遇到需要添加本地jar包依赖的时候,可以选择两种方法: 1. 安装到本地仓库 第一种方法比较常规,适用于需要添加的jar包也是由maven项目导出,含有pom文件的时候.只需 ...

  8. IDEA把Springboot打成可执行jar包,内嵌tomcat 这个可以用

    IDEA把Springboot打成可执行jar包,内嵌tomcat 2018年11月23日 18:36:30 ta山之石可以攻玉 阅读数 3061 版权声明:本文为博主原创文章,未经博主允许不得转载. ...

  9. maven导出Java方法_eclipse导出maven工程的可执行jar包

    一.eclipse导出maven工程的可执行jar包 建立两个maven工程 ZKServer 和ZKClient 注意:用maven进行开发管理的话,默认的打出来的jar包是不能运行的,需要在pom ...

最新文章

  1. 翻译JScript中的面向对象系列文章
  2. html iframe 播放视频播放,播放iframe视频点击链接javascript
  3. android RxJava(RxAndroid)的简单使用
  4. 【CentOS 7笔记4】,两种修改密码方式#
  5. c语言sort函数_C语言经典面试题目及答案详解(二)
  6. 两个for做数据插入_冒泡排序、选择排序、插入排序
  7. 单片机ADC采样算法----加权递推平均滤波法
  8. 《Algorithms》—— 下压(LIFO)栈(能够动态调整数组大小的实现)
  9. 极限3秒钟,闪存能作什么?
  10. Mac VMWARE 安装redis
  11. Python-运算符和其优先级
  12. 将大文件分割为指定大小的文件
  13. 2019java后端面试集合篇最值得收藏的(一)
  14. 最新四端同步苹果cms影视影视源码
  15. Fastdfs读取文件内容
  16. Windows安全基础-AD域
  17. 实用计算机相关日语词汇,日语分类词汇:计算机类(1)
  18. AR Kit Core ML 将救百万iOS开发者于水深火热中
  19. cmd无法进入其他盘符问题解决方案
  20. 连接字符串大全。。。

热门文章

  1. MySQL加索引语句不加锁:ALGORITHM=INPLACE, LOCK=NONE
  2. Linux的Apache报错(20014)Internal error: Error retrieving pid file logs/httpd.pid
  3. Yii游客允许查看页面设置
  4. Mysql的drop/truncate/delete
  5. 蓝牙驱动卸载后自动安装_智能产品 | 安装水循环系统后,全自动洗车机洗车会更节水吗?...
  6. MySQL中的ORDER BY field
  7. PHP中的const
  8. 我的职业梦我是学校计算机的,我院情景剧《我的航空梦》助力第四届“职业梦·技术魂”校园文化展示活动...
  9. php受保护的成员方法,PHP继承和受保护的成员可见性
  10. 压缩比13为什么建议用92的油_92号和95号汽油,哪个更耐烧?车主:欢迎入坑