《Spring Boot 实战:从0到1》第3章 零XML配置的Spring Boot Application

论坛 期权论坛     
选择匿名的用户   2021-5-30 02:06   185   0
<div class="show-content-free">
<h1>第3章 零XML配置的Spring Boot</h1>
<p>Spring Boot 提供了一种统一的方式来管理应用的配置,允许开发人员使用属性properties文件、YAML 文件、环境变量和命令行参数来定义优先级不同的配置值。</p>
<p>本章我们就来体验一下零XML配置的Spring Boot 应用的开发。</p>
<h2>2.1 Spring Boot 简介</h2>
<h3>2.1.1 Spring 去 XML配置简史</h3>
<p>Spring IOC有一个非常核心的概念——Bean。由Spring容器来负责对Bean的实例化,装配和管理。</p>
<p>最早XML是用来描述Bean最为流行的配置方式。Spring可以从XML配置文件中读取任何类型的元数据并自动转换成相应的Java代码。</p>
<p>随着Spring的日益发展,越来越多的人对Spring提出了批评。“Spring项目大量的烂用XML”就是最为严励的一个批评。</p>
<p>由于Spring会把几乎所有的业务类都以Bean的形式配置在XML文件中,造成了大量的XML文件。使用XML来配置Bean失去了编译时的类型安全检查。大量的XML配置使得整个项目变得更加复杂。</p>
<p>我们使用XML配置的问题之一是要等到运行时的时候来发现Bean里面的错误或者其他愚蠢的问题。当然,在使用Spring的IDE插件(或者其他整合了Spring Tools Suite的工具)能在一定程度上发现这方面问题。</p>
<ul><li>Spring 2.5中我们开始有了面向注解的依赖注入编程(&#64;Component和 &#64;Autowired)。</li><li>Spring 3.0中我们有了 JavaConfig , 它能够取代 XML。Spring 3.1中又提供了&#64;Enable* 系列的注解,使得基于注解的配置更加自动化。</li><li>在 Spring 4.0中&#64;Conditional注解(org.springframework.context.annotation.Conditional)实现的基于条件的配置,根据应用的类路径中的类、环境信息以及其他一些相关信息,在运行时自动化地完成配置,大量省去了程序员们大量样板化的手工配置工作。</li></ul>
<h3>2.1.2 要进一步解决的问题</h3>
<p>在有了上面的这些支持后,使用Spring或者SpringMVC的过程中,仍然有很多配置以及繁琐的操作需要我们手工去完成。例如:</p>
<ul><li>单独部署配置一个 tomcat(tomcat 的相关配置需要单独去tomcat安装目录下配)</li><li>使用大量依赖库可能导致的版本冲突</li><li>Spring 集成使用使用模板引擎 Freemarker、velocity、thymeleaf 等需要单独配置</li><li>Spring 集成使用 MyBatis、JPA 等 ORM 框架需要单独配置</li><li>Spring 集成使用安全框架 Security 、日志框架等等都需要单独一套配置</li><li>配置 SpringMVC 中的 DispatcherServlet 需要在 web.xml 或者在 Servlet 初始化代码里进行显式配置</li><li>静态资源的处理</li><li>应用的运维监控工作等</li></ul>
<p>由于这些已经存在的问题,Spring Boot应运而生,使用Spring Boot可以让我们快速创建一个基于Spring的项目,而让这个Spring项目跑起来我们只需要很少的配置就可以了。</p>
<h3>2.1.3 SpringBoot 的核心功能</h3>
<p>Spring Boot主要有如下核心功能:</p>
<ol><li><p>直接创建一个可以独立运行的Spring项目<br> Spring Boot可以以jar包的形式来运行,我们可以直接通过 java -jar xx.jar 命令来运行一个Spring Boot项目。</p></li><li><p>内嵌Servlet容器</p></li></ol>
<p>Spring Boot可以内嵌Tomcat直接一键运行 Web 应用。我们不再需要打 war 包,丢到 Tomcat 下面,再启动 Tomcat 等等一系列操作了。</p>
<ol start="3"><li>提供starter简化 Maven/Gradle 配置</li></ol>
<p>使用Spring或者SpringMVC我们需要添加大量的依赖,而这些依赖很多都是固定的样板化配置。Spring Boot 通过starter 帮助我们简化 Maven/Gradle 配置。</p>
<ol start="4"><li><p>自动配置Spring<br> SpringBoot 提供了大量超级实用的 starter,大大简化了我们使用 Spring 开发过程中的配置。</p></li><li><p>生产环境的应用监控<br> 使用SpringBoot 提供的 Actuator ,我们可以方便地进行应用程序的监控。</p></li><li><p>无代码生成和xml配置<br> SpringBoot 没有引入任何形式的代码生成,它是使用的 Spring 4.0的条件注解以实现根据条件进行配置;同时使用了 Maven/Gradle 的依赖传递解析机制来实现 Spring 应用里面的自动配置。</p></li></ol>
<h2>2.2 回顾 Spring</h2>
<p>Spring能够进行自动化的装配,它使用两种方式来进行自动化装配:</p>
<p>1、组件扫描:<br> Spring会自动发现应用上下文中所创建的bean</p>
<p>2、自动装配:<br> Spring会自动构建bean之间的依赖关系</p>
<p>Spring的自动化装配使用了零xml配置,也就是使用了全代码配置(注解配置),其中代码配置类使用&#64;Configuration注解进行标注。</p>
<h3>2.2.1 组件扫描:</h3>
<p>&#64;Component能给一个类自动生成对象并注入到Spring容器中&#
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP