set注入方式:
—————————————————————————————————
c3p0 Druid
测试代码
@Test //测试手动创建druid 数据源 public void test2() throws Exception { DruidDataSource dataSource=new DruidDataSource(); dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); dataSource.setUrl("jdbc:mysql://localhost:3306/student?&useSSL=false&serverTimezone=UTC"); dataSource.setUsername("root"); dataSource.setPassword("123456"); DruidPooledConnection connection=dataSource.getConnection(); System.out.println(connection); connection.close(); } @Test //测试手动创建c3p0 数据源 public void test1() throws PropertyVetoException, SQLException { ComboPooledDataSource dataSource=new ComboPooledDataSource(); dataSource.setDriverClass("com.mysql.cj.jdbc.Driver"); dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/student?&useSSL=false&serverTimezone=UTC"); dataSource.setUser("root"); dataSource.setPassword("123456"); Connection connection=dataSource.getConnection(); System.out.println(connection); connection.close(); }resource下创建改文件:
jdbc.driver=com.mysql.cj.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/student?&useSSL=false&serverTimezone=UTC jdbc.username=root jdbc.password=123456测试代码
@Test //测试手动创建c3p0 数据源(加载配置文件形式) public void test3() throws PropertyVetoException, SQLException { //读取配置文件 jdbc.properties ResourceBundle resourceBundle=ResourceBundle.getBundle("jdbc"); String driver= resourceBundle.getString("jdbc.driver"); String url= resourceBundle.getString("jdbc.url"); String username= resourceBundle.getString("jdbc.username"); String password= resourceBundle.getString("jdbc.password"); //创建数据源对象 ComboPooledDataSource dataSource=new ComboPooledDataSource(); dataSource.setDriverClass(driver); dataSource.setJdbcUrl(url); dataSource.setUser(username); dataSource.setPassword(password); Connection connection=dataSource.getConnection(); System.out.println(connection); connection.close();创建applicationContext.xml文件
<?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"> <!--加载外部的properties文件--> <context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder> <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.username}"></property> <property name="password" value="${jdbc.password}"></property> </bean> </beans>jdbc.properties文件
jdbc.driver=com.mysql.cj.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/student?&useSSL=false&serverTimezone=UTC jdbc.username=root jdbc.password=123456*/ @Service("userService") @Scope("prototype") /*@Scope("singleton")*/ /*单例*/ public class UserServiceImpl implements UserService { @Value("${jdbc.driver}") private String driver; /*<property name="userDao1" ref="userDao"></property>*/ /* @Autowired//按照数据类型从spring容器中匹配注入 (如果没有Qualifier) @Qualifier("userDao") //按照ID名称匹配 而且必须结合Autowired一起用*/ @Resource(name="userDao")//@Resource相当于我们的 Autowired+Qualifier private UserDao userDao; /* public void setUserDao1(UserDao userDao) { this.userDao = userDao; }*/ public void save() { System.out.println(driver); userDao.save(); } @PostConstruct public void ini(){ System.out.println("service对象初始化方法"); } @PreDestroy public void destroy(){ System.out.println("service对象销毁方法"); } }UserDaoImpl.java
/*<bean id="userDao" class="com.itheima.dao.Impl.UserDaoImpl"></bean>*/ /*@Component("userDao")*/ @Repository("userDao") public class UserDaoImpl implements UserDao { public void save(){ System.out.println("save running...."); } }UserContriller.java
public class UserController { public static void main(String[] args) { /*自动关闭*/ /*ApplicationContext app=new ClassPathXmlApplicationContext("applicationContext.xml");*/ /*手动关闭*/ ClassPathXmlApplicationContext app=new ClassPathXmlApplicationContext("applicationContext.xml"); UserService userService=app.getBean(UserService.class); userService.save(); app.close(); } }applicationContext.xml:
<!--配置主键扫描--> <context:component-scan base-package="com.itheima"/>DataSourceConfiguration.java(非自定义Bean配置:数据源)
//<context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder> @PropertySource("classpath:jdbc.properties") public class DataSourceConfiguration { @Value("${jdbc.driver}") private String driver; @Value("${jdbc.url}") private String url ; @Value("${jdbc.username}") private String username; @Value("${jdbc.password}") private String password; @Bean("dataSource")//Spring会将当前方法的返回值以指定名称 存储到Spring容器 public DataSource getdataSource() throws PropertyVetoException { ComboPooledDataSource dataSource=new ComboPooledDataSource(); dataSource.setDriverClass(driver); dataSource.setJdbcUrl(url); dataSource.setUser(username); dataSource.setPassword(password); return dataSource; } }SpringCofiguration.java
@Configuration//标志该类是Spring是核心配置类 //<context:component-scan base-package="com.itheima"/> @ComponentScan("com.itheima") /*<import resource="">*/ @Import({DataSourceConfiguration.class}) public class SpringCofiguration { }DateSourceTest.java
public class DateSourceTest { @Test //测试spring容器产生数据源对象 public void test4() throws PropertyVetoException, SQLException { //配置文件开发 //ApplicationContext app=new ClassPathXmlApplicationContext("applicationContext.xml"); //注解开发 ApplicationContext app=new AnnotationConfigApplicationContext(SpringCofiguration.class); DataSource dataSource= (DataSource) app.getBean("dataSource"); Connection connection=dataSource.getConnection(); System.out.println(connection); connection.close(); } }配置文件:
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>5.0.5.RELEASE</version> </dependency>SpringJunitTest.java
public class SpringJunitTest { @Autowired private UserService userService; @Autowired private DataSource dataSource; @Test public void test1() throws SQLException { userService.save(); System.out.println(dataSource.getConnection()); } }