package phoenix.datasource; import java.util.Properties; import javax.sql.DataSource; import org.apache.commons.lang3.Validate; import org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy; import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.pool.DruidDataSourceFactory; import lombok.Getter; import lombok.Setter; import phoenix.config.Config; import phoenix.util.Constants; import phoenix.util.InitTool; public class DataSourceProxy extends LazyConnectionDataSourceProxy { @Setter @Getter private String dataSourceName; @Override public void afterPropertiesSet() { if (dataSourceName == null) { dataSourceName = Constants.CONF_DATASOURCE_ITEM; } String path = Config.getContext().getString(dataSourceName); try { Properties ps = InitTool.loadFile(path); DataSource ds = DruidDataSourceFactory.createDataSource(ps); if (ps.containsKey("name")) { ((DruidDataSource) ds).setName(ps.getProperty("name")); } else { String url = ((DruidDataSource) ds).getRawJdbcUrl(); String ip_port = url.split("/")[2].replaceAll(":", "_"); ((DruidDataSource) ds).setName(ip_port); } setTargetDataSource(ds); } catch (Exception e) { Validate.isTrue(false, "DataSource Init Error"); } super.afterPropertiesSet(); } public void close() { if (getTargetDataSource() instanceof DruidDataSource) { ((DruidDataSource) getTargetDataSource()).close(); } } }