springboot项目中使用注解@Autowired自动装配DataSource:
@RestController
public class HelloController {
@Autowired
DataSource dataSource;
@RequestMapping("/hello")
public String hello() {
//System.out.println(dataSourceProperties2);
System.out.println(dataSource.getClass());
return "hello springboot!!";
}
}
在启动器所在Module的自定义配置类中使用@Bean注解,创建数据源对象并交给IOC容器管理:
@SpringBootConfiguration //自定义配置类作用相当于: spring.xml
public class DataSourceAutoConfiguration {
//@Autowired
@Resource
DataSourceProperties dataSourceProperties;
//配置druid数据源
/*
* <bean id="datasource" class="DruidDataSource">
<property name="username" value="root">
* .....
* */
@Bean //创建bean对象并在ioc容器中管理
@ConditionalOnProperty(name ="spring.jdbc.datasource.type" ,havingValue ="druid" )
public DataSource druidDataSource(){
DruidDataSource druidDataSource=new DruidDataSource();
druidDataSource.setUsername(dataSourceProperties.getUserName());
druidDataSource.setPassword(dataSourceProperties.getPassword());
druidDataSource.setUrl(dataSourceProperties.getUrl());
druidDataSource.setDriverClassName(dataSourceProperties.getDriverClassName());
return druidDataSource;
}
在控制器中,@Autowired注解按type装配DataSource,DataSource是接口,所有实际提供给控制器Controller的是Druid数据源。