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技术站