SmartInitializingSingleton怎么注册DataSource
时间: 2024-01-15 17:03:20 浏览: 54
JCD.rar_DataSource_connect
可以通过实现`SmartInitializingSingleton`接口,在其中手动注册DataSource。
例如:
```java
@Component
public class DataSourceInitializer implements SmartInitializingSingleton {
@Autowired
private BeanFactory beanFactory;
@Override
public void afterSingletonsInstantiated() {
// 创建DataSource对象
HikariDataSource dataSource = new HikariDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/test");
dataSource.setUsername("root");
dataSource.setPassword("root");
// 注册DataSource
beanFactory.registerSingleton("dataSource", dataSource);
}
}
```
这里通过`HikariDataSource`创建了一个DataSource对象,并将其注册到BeanFactory中,BeanFactory会自动将其纳入Spring容器的管理范畴。
需要注意的是,这里的注册名为`dataSource`,如果其他Bean需要使用该DataSource,可以通过`@Autowired`注入名为`dataSource`的bean。在使用DataSource时,可以使用`@Qualifier`注解来指定需要注入的DataSource名称。
```java
@Service
public class MyService {
@Autowired
@Qualifier("dataSource")
private DataSource dataSource;
// ...
}
```
阅读全文