public class MyContext implements ApplicationContextAware { private static ApplicationContext context;// 聲明一個靜態變量保存 @Override public void setApplicationContext(ApplicationContext context) throws BeansException { // TODO Auto-generated method stub this.context = context; } public static ApplicationContext getContext() { return context; } }
2:在applicationContext.xml裏面注入該類,
<bean class="com.util.MyContext"></bean>
這樣就能夠在類裏面使用applicationContext提供的bean啦。
java
public class SpringDataSource extends AbsDataSource { private static Logger logger = Logger.getLogger(SpringDataSource.class); private DataSource ds; public SpringDataSource(){ this.ds = (DataSource) MyContext.getContext().getBean ("dataSource"); System.out.println("########"+ this.ds.toString()); } @Override public Connection getConnection() { try { logger.debug("從數據源" + this.getName() + "獲取數據庫鏈接"); return this.ds.getConnection(); } catch (SQLException e) { throw new WabacusRuntimeException("獲取" + this.getName() + "數據源的數據庫鏈接失敗", e); } } @Override public DataSource getDataSource() { return this.ds; } }
4:在wabacus的配置文件wabacus.cfg.xml 中就能夠這樣配置來獲取數據源啦,以下:
<datasources default="ds_mysql"> <datasource name="ds_mysql" type="com.wabacus.SpringDataSource" dbtype="com.wabacus.config.database.type.MySql"> <property name="driver">driver</property> </datasource> </datasources>