一、Spring Boot所解决的问题

  Java开发十分笨重:繁多的配置、低下的开发效率、复杂的部署流程以头疼的第三方技术集成。

  Spring Boot的理念:习惯优于配置——项目中存在大量的配置,此外还内置一个习惯性配置,免除了繁冗的手动配置,这样让基于Spring框架的项目快速运行起来。

  总结

  优点:

  (1)快速构建项目;

  (2)对主流开发框架的无配置集成;

  (3)项目可独立运行,无需依赖waibuServlet容器(因为内部有集成?)

  (4)提供运行时的应用监控;

  (5)极大提高开发、部署效率;

  (6)与云计算天然集成;

  缺点:

  (1)文档资料少;

  (2)若你不喜欢Spring,那也很无奈。

  二、快速入门

  2.1 Spring Boot的环境搭建(均在Maven的pom.xml中添加)

  (1)设置Spring Boot的parent(实际上,这是一个依赖组合)

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.RELEASE</version>
</parent>

  (2)导入Spring Boot的web支持

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

  (3)添加Spring Boot的插件

<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>

**提示:以上的标签元素注意要放在正确的父元素下  

  2.2 Spring Boot的核心注解

  @SpringBootApplication,用来开启自动配置(相当于一键部署)。

  2.3 启动Spring Boot项目的方式

  (1)run Java Aplication

  (2)通过Spring Boot的Maven插件运行(在搭建环境时配置好的插件,貌似是Maven Build,具体如下图)

  

  四、Spring Boot的核心

  一个基于Spring Boot的Hello程序:

@SpringBootApplication
@Controller
@SpringBootConfiguration
public class App
{
public static void main( String[] args )
{
ApplicationContext ctx= SpringApplication.run(App.class,"-Ddebug=true");
String[] beanNames=ctx.getBeanDefinitionNames();
Arrays.sort(beanNames);
for(String beanName:beanNames){
System.out.println(beanName);
}
} @RequestMapping("hello")
@ResponseBody
public String hello(){
return "Share Biguo"; }
}

  4.1 入口类和@SpringBootApplication

  Spring Boot的项目一般都会有Application的入口类(入口类中会有main方法),这是一个标准的Java应用程序的入口方法。

  @SpringBootApplication,是Spring Boot的核心注解,实际上,它是一个组合注解(即一个顶多个),就是这个注解的定义处,头上有多个注解。

  (1)@SpringBootConfiguration

    这是SpringBoot项目的配置注解,也是一个组合注解(不用想,肯定包含了@Configuration(Spring的配置注解)),所以在Spring Boot的项目中,推荐使用@SpringBootConfiguration替代@Configuration。

  (2)@EnableAutoConfiguration

    启用自动配置,该注解会使Spring Boot根据项目中依赖的jar包自动配置项目的配置项。(根据你的现有的配置自动添加其他你必需的配置,jar包,tomcat等)

  (3)@ComponentScan

    默认扫描@SpringBootApplication注解所在类的同级目录(就是类所在的Package)以及子目录。

  4.2 关闭一些不需要的自动配置

  因为Spring Boot自动配置后,添加的jar包等资源十分庞大,其中有很多我们并不需要。

  比如我们想关闭某一项的自动配置,例如,不需要Spring Boot自动帮我配置Redis,想手动配置:

@Controller
@SpringBootApplication(exclude={RedisAutoCnfiguration.class})
@Configuration
public class HelloApplicaiton{
//***
}

  其它配置类似,相关的配置类是可以在相关的jar包中查看的。

  4.3 自定义Banner(ch06 16min)

  www.patorjk.com

  4.4 全局配置文件

  Spring Boot使用一个全局的配置文件application.properties或者是application.yml,在resources目录下或者类路径的/config下。一般放到rsources下。

  在这个配置文件中,可以自定义一些配置:例如修改工程的访问端口;前端控制器的映射url等.

  总之非常非常多,涉及到了Spring的各个方面.

  4.5 Starter pom

  Spring Boot为我们提供了简化企业级开发绝大多数场景的Starter pom, 只要使用了应用场景所需要的Starter pom, 相关的技术配置将会消除,就可以得到Spring Boot为我们提供的自动配置的Bean。

  查看官方提供的pom, 了解每种pom的应用场景。

  随着SpringBoot的发展, 也有越来越多的第三方在组织提供Starter pom。

  

  4.6 XML配置

  Spring Boot试图全面用Java配置(注解) 来取代XML配置,但在实际项目中, 有一些特殊的要求必须使用xml配置。

  这时我们可以使用Spring的注解@ImportResource 来加载xml配置。

@ImportResource({"classpath:some-context.xml","classpath:another-context.xml"})

  

  4.7 日志

  Spring Boot对各种日志框架都做了支持,可以通过在全局配置文件application.properties中改动,来修改默认的日志配置。

  五、Spring Boot自动配置的原理

  Spring Boot在进行SpringApplicaiton对象的实例化时会加载META-INF/Spring.factories(好像很多jar包中都有这个文件夹和文件)文件,将该配置文件中的配置加载到Spring容器。

  

5.1 Maven下载源码

  通过dependency:sources命令,下载该项目中所有的依赖的包的源码。

  通过源码学习Spring Boot的处理流程(我还没理解)。

  

  5.2 条件注解@ConditionalOnXXX

  @ConditionalOnBean:当容器里有指定的Bean的条件下

  @ConditionalOnClass:当类路径下有指定的类的条件下

  很多很多!

Spring Boot(一) 初步理解Spring Boot的更多相关文章

  1. Spring学习笔记--环境搭建和初步理解IOC

    Spring框架是一个轻量级的框架,不依赖容器就能够运行,像重量级的框架EJB框架就必须运行在JBoss等支持EJB的容器中,核心思想是IOC,AOP,Spring能够协同Struts,hiberna ...

  2. 【Java面试】如何理解Spring Boot中的Starter?

    一个工作了3年的Java程序员,遇到一个Spring Boot的问题. 他对这个问题有一些了解,但是回答得不是很好,希望参考我的高手回答. 这个问题是:"如何理解Spring Boot中的S ...

  3. [转]通过Spring Boot三分钟创建Spring Web项目

    来源:https://www.tianmaying.com/tutorial/project-based-on-spring-boot Spring Boot简介 接下来我们所有的Spring代码实例 ...

  4. 【Spring】关于Boot应用中集成Spring Security你必须了解的那些事

    Spring Security Spring Security是Spring社区的一个顶级项目,也是Spring Boot官方推荐使用的Security框架.除了常规的Authentication和A ...

  5. 一起来学spring Cloud | 第一章:spring Cloud 与Spring Boot

    目前大家都在说微服务,其实微服务不是一个名字,是一个架构的概念,大家现在使用的基于RPC框架(dubbo.thrift等)架构其实也能算作一种微服务架构. 目前越来越多的公司开始使用微服务架构,所以在 ...

  6. spring boot 2.0.3+spring cloud (Finchley)1、搭建服务注册和发现组件Eureka 以及构建高可用Eureka Server集群

    一 .搭建Eureka 编写Eureka Server 由于有多个spring boot项目,采用maven多module的结构,项目结构如下: 新建一个maven主工程,在主maven的pom文件中 ...

  7. Spring Boot 2(一):Spring Boot 2.0新特性

    Spring Boot 2(一):Spring Boot 2.0新特性 Spring Boot依赖于Spring,而Spring Cloud又依赖于Spring Boot,因此Spring Boot2 ...

  8. Spring Boot(十四):spring boot整合shiro-登录认证和权限管理

    Spring Boot(十四):spring boot整合shiro-登录认证和权限管理 使用Spring Boot集成Apache Shiro.安全应该是互联网公司的一道生命线,几乎任何的公司都会涉 ...

  9. Spring Boot 应用系列 4 -- Spring Boot 2 整合log4j2

    一.背景 1. log4j2传承于log4j和logback,它是目前性能最好的日志处理工具,有关它们的性能对比请看: 2. 除了性能好之外,log4j2有这么几个重要的新features: (1) ...

随机推荐

  1. CentOS6.8安装Docker

    在CentOS6.8上安装Docker 1.Docker使用EPEL发布,RHEL系的OS首先要确保已经持有EPEL仓库,否则先检查OS的版本,然后安装相应的EOEL包:如下命令: yum insta ...

  2. linux下什么工具可以用来纠正文件中的拼写和排版错误?

    答: ispell,官网在此

  3. 关于Intel处理器架构中AVX2里Gather特性的说明

    在Intel Haswell架构里引入了Gather特性.它使得CPU可以使用向量索引存储器编址从存储器取非连续的数据元素.这些gather指令引入了一种新的存储器寻址形式,该形式由一个基地址寄存器( ...

  4. GPS模块编程之NMEA0183协议

    NMEA 0183是美国国家海洋电子协会(National Marine Electronics Association)为海用电子设备制定的标准格式.现在已经成为GPS导航设备统一的RTCM(Rad ...

  5. Swiper轮播插件使用

    前文 Swiper是纯javascript打造的滑动特效插件,面向手机.平板电脑等移动终端,能实现触屏焦点图.触屏Tab切换.触屏多图切换等常用效果.                 归根到此,Swi ...

  6. Server 2012使用Windows PowerShell cmdlet安装角色和角色服务功能

    Server 2012使用Windows PowerShell cmdlet安装角色和角色服务功能  Windows Server 2012 安装 SQL server 2008 出现了如下错误: 解 ...

  7. [Java]1.两数之和 - LeetCode

    1 题目 2 思路与代码 思路一:暴力法(两层For循环) 时间复杂度:O(n^2) 对于每个元素,我们试图通过遍历数组的其余部分来寻找它所对应的目标元素,这将耗费 O(n) 的时间.因此时间复杂度为 ...

  8. Flutter 的一些小技巧

    1. 获取状态栏高度 import 'dart:ui'; MediaQueryData.fromWindow(window).padding.top 2. 设置AppBar的高度 Scaffold( ...

  9. zabbix监控LAMP全教程

    一.安装前准备 A.下载yum源 1.备份/etc/yum.repos.d/CentOS-Base.repo ,在备份之前,要先安装wget 插件 #mv /etc/yum.repos.d/CentO ...

  10. ASP.NET 拼多多用户登录授权后使用code去换取access_token

    一.拼多多开放平台 由于本人刚毕业进公司实习 遇到一些问题然后想通过博客来记录和分享给大家一起学习. 第一次写博客没什么经验不是写的很好 请大家多多关照 嘴下留情哈哈 谢谢! 好了 话不多说直接进入主 ...