《Spring Boot官方文档》16. 自动配置

16. 自动配置

Spring Boot的自动配置会尝试根据你添加进来的jar依赖来自动配置你的Spring应用。例如,如果HSQLDB在你的classpath路径上,你没有手动配置任何数据库连接实体类,我们还会自动配置内存数据库。

你可以有选择的实现自动配置,可以向 @Configuration上添加@EnableAutoConfiguration或者@SpringBootApplication注解来实现。

你应该只添加一个@EnableAutoConfiguration注解。我们通常建议你把它添加到你的主要 @Configuration类上。

16.1 逐步覆盖自动配置

自动配置是非入侵式的,任何时候你都可以使用你自定义的配置来覆盖自动配置的特定部分。例如,如果你要添加自己的DataSource bean,默认的内嵌数据库会无效。

如果你需要查找当前应用的自动配置,你可以启动应用时加上–debug开关。它会为核心日志记录器开启debug日志记录,并且会打印自动配置日志信息到控制台。

16.2禁用特定自动配置

如果你发现正在应用的特定自动配置不是你想要的,你可以使用@EnableAutoConfiguration的排除属性来禁用它们。

import org.springframework.boot.autoconfigure.*;
import org.springframework.boot.autoconfigure.jdbc.*;
import org.springframework.context.annotation.*;
@Configuration
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class}) public class MyConfiguration {
}

如果这个类不在classpath路径下,你可以使用该注解的excludeName属性以及指定全限定名 来替代。最终,你也可以控制自动配置类的列表来额除spring.autoconfigure.exclude属性。

你可以通过注解级别以及使用属性来定义排除项。

17. Spring Beans和依赖注入

你可以自由使用任何标准Spring框架技术来定义你的beas以及它们的依赖。简单来说,我们通常使用@ComponentScan 来发现你的beans,并且配合@Autowired构造器来更好的注入。

如果你在构造代码时使用上面建议的方式(在根包下定位你的应用类),你可以用@ComponentScan注解,无需任何参数。你所有的应用组件(@Component, @Service, @Repository, @Controller 等等)都会作为Spring Beans来注册。

下面的例子是使用@Service Bean构造器注入用于获取必要的RiskAssessor Bean。

package com.example.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service public class DatabaseAccountService implements AccountService {

private final RiskAssessor riskAssessor;

@Autowired public DatabaseAccountService(RiskAssessor riskAssessor) {

this.riskAssessor = riskAssessor;

}

// …

}

请注意使用构造器注入允许使用final标记riskAssessor 对象,表明以后该对象不能被改变。

转载自 并发编程网 - ifeve.com

时间: 2024-09-12 12:19:56

《Spring Boot官方文档》16. 自动配置的相关文章

《Spring 5官方文档》翻译邀请

公司新的应用已经开始使用Spring 5,所以本月组织大家翻译<Spring 5 官方文档> SINGLE网页版  PDF版本. 如何领取 通过评论领取想要翻译的文章,每次领取一章或一节(根据内容长短),翻译完后再领取其他章节.领取完成之后,建议在一个星期内翻译完成,如果不能完成翻译,也欢迎你邀请其他同学和你一起完成翻译.请谨慎领取,并发网是非盈利组织,没办法去跟进每一篇译文的进展,所以很多文章领取了没有翻译,会导致文章长时间没人翻译. 如何提交? 翻译完成之后请登录到并发编程网后台,点击左上

《Spring 5 官方文档》16.ORM和数据访问(二)

16.3.4编程式事务划分 开发者可以在应用程序的更高级别上对事务进行标定,而不用考虑低级别的数据访问执行了多少操作.这样不会对业务服务的实现进行限制:只需要定义一个Spring的PlatformTransactionManager即可.当然,PlatformTransactionManager可以从多处获取,但最好是通过setTransactionManager(..)方法以Bean来注入,正如ProductDAO应该由setProductDao(..)方法配置一样.下面的代码显示Spring

《Spring 5 官方文档》16.ORM和数据访问(三)

16.4.2 基于JPA的EntityManagerFactory和EntityManager来实现DAO 虽然EntityManagerFactory实例是线程安全的,但EntityManager实例不是.注入的JPA EntityManager的行为类似于从JPA Spec中定义的应用程序服务器的JNDI环境中提取的EntityManager.它将所有调用委托给当前事务的EntityManager(如果有);否则,它每个操作返回的都是新创建的EntityManager,通过使用不同的Enti

《Spring 5 官方文档》16.ORM和数据访问(一)

16.1介绍一下Spring中的ORM Spring框架在实现资源管理.数据访问对象(DAO)层,和事务策略等方面,支持对Java持久化API(JPA)以及原生Hibernate的集成.以Hibernate举例来说,Spring有非常赞的IoC功能,可以解决许多典型的Hibernate配置和集成问题.开发者可以通过依赖注入来配置O-R(对象关系)映射组件支持的特性.Hibernate的这些特性可以参与Spring的资源和事务管理,并且符合Spring的通用事务和DAO层的异常体系.因此,Spri

《Log4j2官方文档》自动加载配置

Log4j可以在初始化的时候执行自动配置.当Log4j启动的时候,会首先定位所有的ConfigurationFactory的配置然后会根据权重进行从高到低的排序.目前的版本,Log4j包含了四种类型的ConfigurationFactory的实现,JSON,YAML,properties,XML. 1:Log4j将会检查 log4j.configurationFile的系统属性,如果已经设置了对应的属性,将会使用ConfigurationFactory对应的属性去加载配置. 2:如果没有设置对应

《Spring 5 官方文档》18. Web MVC 框架(八)

18.8.5 LocaleChangeInterceptor 您可以通过添加LocaleChangeInterceptor到其中一个处理程序映射来启用更改区域设置(请参见第18.4节"处理程序映射").它将检测请求中的一个参数并更改区域设置.它呼吁setLocale()在LocaleResolver上下文中也存在.以下示例显示,对包含*.view名为的参数的所有资源的调用siteLanguage现在将更改语言环境.因此,例如,对以下URL的请求http://www.sf.net/hom

Spring Data 官方文档》4.7 Spring Data扩展

4.7 Spring Data扩展 这部分说明Spring Data一系列的扩展功能,可以使Spring Dta使用多样的上下文.目前大部分集成是针对Spring MVC. 4.7.1 Querydsl扩展 Querydsl是一个框架,通过它的流式API构建静态类型的SQL类查询.多个Spring Data模块通过QueryDslPredicateExecutor与Querydsl集成. 例29 QueryDslPredicateExecutor接口 1 public interface Que

《Spring 5 官方文档》5. 验证、数据绑定和类型转换(二)

5.5 Spring类型转换 Spring 3引入了core.convert包来提供一个一般类型的转换系统.这个系统定义了实现类型转换逻辑的服务提供接口(SPI)以及在运行时执行类型转换的API.在Spring容器内,这个系统可以当作是PropertyEditor的替代选择,用于将外部bean的属性值字符串转换成所需的属性类型.这个公共的API也可以在你的应用程序中任何需要类型转换的地方使用. 5.5.1 Converter SPI 实现类型转换逻辑的SPI是简单并且强类型的: package

《Spring 5 官方文档》18. Web MVC 框架(五)

自定义WebDataBinder初始化 要通过Spring定制与PropertyEditor的请求参数绑定 WebDataBinder,可以使用@InitBinder控制器中的-annotated @InitBinder方法,@ControllerAdvice类中的方法或提供自定义 WebBindingInitializer.有关更多详细信息,请参阅"使用@ControllerAdvice和@RestControllerAdvice建议控制器"一节. 使用@InitBinder自定义数