在Spring Boot应用中,`DataSourceAutoConfiguration`会根据classpath中的依赖自动配置一个`DataSource` Bean。如果开发者希望使用自己定义的、配置更复杂的`DataSource`(例如,使用特定连接池参数的DruidDataSource),同时又想禁用掉Spring Boot的默认`DataSource`,最符合Spring Boot设计理念的做法是什么?
在`application.properties`中设置`spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration`来彻底禁用它。
在自己的`@Configuration`类中定义一个`@Bean`方法返回自定义的`DataSource`实例,无需其他任何操作。
自定义一个`DataSource` Bean,并必须为其添加`@Primary`注解,以确保它被优先使用。
实现一个`BeanPostProcessor`,在bean初始化后阶段,找到名为`dataSource`的Bean并替换成自己的实例。