SpringBoot特点之依赖管理和自动装配(实例代码)

SpringBoot特点之依赖管理和自动装配(实例代码)

依赖管理

Spring Boot的依赖管理采用了“约定优于配置”的原则,省去了繁琐的依赖配置。Spring Boot通过Starter POMs来管理依赖,Starter POMs是一种特殊的POM文件,包含了一系列相关的依赖,我们只需要添加相应的Starter POM,即可快速地集成一些常用的依赖。

以下是一个使用日志记录的Spring Boot应用的pom.xml文件的示例:

<dependencies>
    <!-- Spring Boot Starter Dependencies -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- Logging Dependencies -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-logging</artifactId>
    </dependency>

    <!-- Test Dependencies -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

在上面的示例中,我们可以看到使用了一些名为spring-boot-starter-xxx的依赖,这些依赖会自动引入其他相关的依赖,如spring-web、spring-boot-starter-logging等。

值得注意的是,Sprig Boot使用了“依赖反转”的原则,应用程序是和依赖无关的,这个原则也被称为“依赖注入”或“控制反转”。

自动装配

Spring Boot的自动装配能够让我们无需手动配置就能在应用程序中使用相关模块的功能,例如自动配置数据库连接池、自动配置模板引擎等。

Spring Boot的自动装配使用条件注解,将特定条件作为激活自动装配的一个判断依据,从而实现自动装配的目的。

以下是自动配置MVC的一个示例:

@Configuration
@ConditionalOnClass({ Servlet.class, DispatcherServlet.class, WebMvcConfigurer.class })
@ConditionalOnWebApplication
@AutoConfigureAfter(WebMvcAutoConfiguration.class)
public class WebMvcAutoConfiguration {

    // 自动配置MVC
    @Configuration
    @EnableConfigurationProperties({ WebMvcProperties.class, ResourceProperties.class })
    @Order(Ordered.HIGHEST_PRECEDENCE + 10)
    protected static class WebMvcAutoConfigurationAdapter extends WebMvcConfigurerAdapter implements ResourceLoaderAware {

        //省略其他方法

        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            if (!this.resourceProperties.isAddMappings()) {
                logger.debug("Default resource handling disabled");
                return;
            }
            Integer cachePeriod = this.resourceProperties.getCachePeriod();
            if (!registry.hasMappingForPattern("/webjars/**")) {
                customizeResourceHandlerRegistration(registry.addResourceHandler("/webjars/**")
                        .addResourceLocations("classpath:/META-INF/resources/webjars/")
                        .setCachePeriod(cachePeriod));
            }
            String staticPathPattern = this.mvcProperties.getStaticPathPattern();
            if (!registry.hasMappingForPattern(staticPathPattern)) {
                customizeResourceHandlerRegistration(registry.addResourceHandler(staticPathPattern)
                        .addResourceLocations(this.resourceProperties.getStaticLocations())
                        .setCachePeriod(cachePeriod));
            }
        }

        //省略其他方法
    }
}

在上面的示例中,我们可以看到使用了@EnableConfigurationProperties注解来启用一些配置属性,例如WebMvcProperties和ResourceProperties。

同时,我们也可以看到使用了@ConditionalOnClass@ConditionalOnWebApplication注解来确定自动装配的条件,只有当我们的应用程序使用了Servlet、DispatcherServlet和WebMvcConfigurer等相关类,并且是一个Web应用程序时,才会自动配置MVC。

最后,我们可以看到在自动配置类中定义了addResourceHandlers()方法,用于配置应用程序资源的映射规则。

通过上面的示例,我们可以在应用程序中使用自动配置的MVC功能,而无需手动配置SpringMVC的相关组件和属性。

总之,Spring Boot的自动装配和依赖管理使得我们可以充分利用约定优于配置的思想,加载应用程序所需的相关依赖和自动配置,从而大幅度减少开发人员的工作量。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot特点之依赖管理和自动装配(实例代码) - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • 微信小程序学习总结(三)条件、模板、文件引用实例分析

    下面就为大家详细讲解“微信小程序学习总结(三)条件、模板、文件引用实例分析”的完整攻略。 条件 条件是微信小程序中常用的一种语句,可以根据不同的条件执行不同的代码块。使用条件语句可以实现更加灵活的程序逻辑。 在小程序中,使用 wx:if、wx:elif、wx:else 来表示条件语句。其中,wx:if 表示如果条件满足,则显示相应的内容,否则不显示;wx:e…

    Java 2023年5月23日
    00
  • 使用jquery-easyui的布局layout写后台管理页面的代码详解

    使用jquery-easyui的布局layout写后台管理页面的代码详解: 一、概述 在开发后台管理系统时,使用jquery-easyui的布局layout可以大幅度简化代码编写和调试过程。本文将从安装、配置、创建布局、添加面板等方面详细介绍使用jquery-easyui的布局layout进行后台管理设计的攻略。 二、安装和配置 1.引入jquery、jqu…

    Java 2023年6月15日
    00
  • Java之Spring Boot创建和使用

    Java之Spring Boot创建和使用 Spring Boot是一个基于Spring Framework的快速应用开发框架。它可以快速创建、运行Spring应用,提供自动配置、内嵌服务器等特性,可以让我们更加专注于业务的实现,而不用花费大量时间在Spring应用的配置上。 安装和配置 安装和配置Spring Boot非常简单,只需要以下几个步骤: 下载最…

    Java 2023年5月15日
    00
  • 基于SSM 集成 Freemarker模板引擎的方法

    基于SSM集成Freemarker模板引擎的方法主要分为以下三步: 1. 导入Freemarker相关依赖包 在pom.xml文件中,我们需要导入Freemarker的依赖包。具体代码如下: <!– Freemarker 引擎 –> <dependency> <groupId>org.freemarker</gr…

    Java 2023年5月31日
    00
  • 深入浅出JAVA MyBatis-快速入门

    接下来我将详细讲解“深入浅出JAVA MyBatis-快速入门”的完整攻略。 一、MyBatis简介 MyBatis是一个开源的持久层框架,它对JDBC进行了轻量级封装,使得开发者只需要关注SQL本身,而不需要过多考虑JDBC相关的代码。MyBatis使用XML或注解来配置和映射原始数据类型、Map和POJO到数据库记录。 二、MyBatis入门 1. 安装…

    Java 2023年5月19日
    00
  • Java string.trim()究竟去掉了什么

    下面是对Java中string.trim()函数的详细讲解。 首先,string.trim()函数是用来移除字符串两侧空白字符的。所谓的空白字符包括空格、制表符、换行符等等。这个函数会返回一个新的字符串,原字符串并未被改变。 例如,如果我们有一个字符串 ” Hello, World! ” ,那么我们可以通过 string.trim() 来去掉字符串两侧的空白…

    Java 2023年5月20日
    00
  • 什么是永久代?

    以下是关于 Java 永久代的详细讲解和使用攻略: 什么是永久代? Java 永久代(Permanent Generation)是一种用于存储加载类信息、常量、静态变量、即时编译编译后的代码数据的内存区域。永久代是线程共享的,其大小可以通过 -XX:MaxPermSize 参数进行设置。 永久代的使用攻略 使用 Java 永久代需要注意以下几点: 在程序开发…

    Java 2023年5月12日
    00
  • springboot集成kafka消费手动启动停止操作

    下面将详细讲解如何在Spring Boot 项目中集成 Kafka 消费者,并实现手动启动、停止操作。 步骤一:添加Kafka依赖 在 maven 的 pom 文件中添加 Kafka 相关依赖: <dependency> <groupId>org.springframework.kafka</groupId> <ar…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部