写在前面
Spring配置数据源
ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource()
//注册驱动
comboPooledDataSource.setDriverClass("com.mysql.cj.jdbc.Driver")
//配置
comboPooledDataSource.setJdbcUrl("jdbc:mysql://localhost:3306/dbtest3")
comboPooledDataSource.setUser("root")
comboPooledDataSource.setPassword("123456789")
//获取连接
Connection connection = comboPooledDataSource.getConnection()
System.out.println(connection)
connection.close()
ResourceBundle bundle = ResourceBundle.getBundle("c3p0")
String driverClass = bundle.getString("driverClass")
String jdbcUrl = bundle.getString("jdbcUrl")
String user = bundle.getString("user")
String password = bundle.getString("password")
ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource()
//注册驱动
comboPooledDataSource.setDriverClass(driverClass)
....
DruidDataSource druidDataSource = new DruidDataSource()
//注册驱动
druidDataSource.setDriverClassName("com.mysql.cj.jdbc.Driver")
//配置
druidDataSource.setUrl("jdbc:mysql://localhost:3306/dbtest3")
druidDataSource.setUsername("root")
druidDataSource.setPassword("123456789")
DruidPooledConnection connection = druidDataSource.getConnection()
System.out.println(connection)
connection.close()
通过xml文件配置
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.cj.jdbc.Driver"></property>
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/dbtest3"></property>
<property name="user" value="root"></property>
<property name="password" value="123456789"></property>
</bean>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation=
"http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<context:property-placeholder location="classpath:c3p0.properties"/>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driver}"></property>
<property name="jdbcUrl" value="${jdbc.url}"></property>
<property name="user" value="${jdbc.user}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean>
</beans>
注解配置
- spring轻代码重配置
- 原始注解替代配置
- 指定spring在初始化时要扫描的包
<context:component-scan base-package="com.java"/>
<bean id="userDao" class="com.java.test.dao.impl.UserDaoImpl"></bean>
<bean id="userService" class="com.java.test.service.impl.UserServiceImpl">
<property name="userDao" ref="userDao"></property>
</bean>
@Component("userDao")
public class UserDaoImpl implements UserDao {
public void sava() {
System.out.println("UserDaoImpl - save");
}
}
@Component("userService")
public class UserServiceImpl implements UserService {
@Autowired
@Qualifier("userDao")
private UserDao userDao;
public void save() {
userDao.sava();
}
}
原始注解

@Value("${jdbc.driver}")
private String driver;
- scope、postConstruct、preDestroy 类比bean标签的属性设置效果
新注解

@Configuration
public class SpringConfiguration {
}
@Configuration
@ComponentScan("com.java")
@Import({SpringDataSourceConfiguration.class})
public class SpringConfiguration {
}
@PropertySource("classpath:c3p0.properties")
public class SpringDataSourceConfiguration {
@Value("${jdbc.driver}")
private String driver;
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.user}")
private String user;
@Value("${jdbc.password}")
private String password;
@Bean("dataSource")
public DataSource getDataSource() throws PropertyVetoException {
ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource();
comboPooledDataSource.setDriverClass(driver);
comboPooledDataSource.setJdbcUrl(url);
comboPooledDataSource.setUser(user);
comboPooledDataSource.setPassword(password);
return comboPooledDataSource;
}
}
//用注解配置类进行配置
AnnotationConfigApplicationContext annotationConfigApplicationContext = new AnnotationConfigApplicationContext(SpringConfiguration.class)
ComboPooledDataSource dataSource = (ComboPooledDataSource)annotationConfigApplicationContext.getBean("dataSource")
Connection connection = dataSource.getConnection()
System.out.println(connection)
connection.close()
加载xml文件
@ImportResource("classpath:applicationContext.xml")