文章目录
1. Spring配置数据源
1.1 数据源(连接池)的作用
- 数据源(连接池)是提高程序性能出现的
- 事先实例化数据源,初始化部分连接资源
- 使用连接资源时从数据源中获取
- 使用完毕后将连接资源归还给数据源
常见的数据源(连接池):DBCP、C3P0、BoneCP、Druid等
1.2 手动创建数据源
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.48</version>
</dependency>
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.23</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.1</version>
<scope>test</scope>
</dependency>
</dependencies>
package com.itheima.test;
import com.alibaba.druid.pool.DruidDataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.junit.Test;
import java.sql.Connection;
import java.util.ResourceBundle;
public class DataSourceTest {
//测试手动创建 c3p0 数据源
@Test
public void test1() throws Exception {
ComboPooledDataSource dataSource = new ComboPooledDataSource();
dataSource.setDriverClass("com.mysql.jdbc.Driver");
dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/test");
dataSource.setUser("wan");
dataSource.setPassword("@80306");
Connection connection = dataSource.getConnection();
System.out.println(connection);
connection.close();
}
//测试手动创建 druid 数据源
@Test
public void test2() throws Exception {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/test");
dataSource.setUsername("wan");
dataSource.setPassword("@80306");
Connection connection = dataSource.getConnection();
System.out.println(connection);
connection.close();
}
//测试手动创建 druid 数据源(加载配置文件形式)
@Test
public void test() throws Exception {
//读取配置文件
ResourceBundle rb = ResourceBundle.getBundle("jdbc");
String driver = rb.getString("jdbc.driver");
String url = rb.getString("jdbc.url");
String username = rb.getString("jdbc.username");
String password = rb.getString("jdbc.password");
//创建数据源对象,设置连接参数
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(driver);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
Connection connection = dataSource.getConnection();
System.out.println(connection);
connection.close();
}
}
1.3 Spring配置数据源
可以将DataSource的创建权交由Spring容器去完成
将上面的代码可以改为:由Spring帮我去创建DataSource:
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver"/>
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test"/>
<property name="user" value="wan"/>
<property name="password" value="@80306"/>
</bean>
1.4 抽取jdbc配置文件
应用后:
2. Spring注解开发
2.1 Spring原始注解
注解代替xml配置文件简化开发
Spring原始注解主要是替代Bean的配置
注意:
使用注解开发时,需要在applicationContext.xml中配置组件扫描,作用是指定哪个包及其子包下面的bean需要进行扫描以便识别使用注解配置的类、字段和方法
<!--注解的组件扫描-->
<context:component-scan base-backage="com.itheima"></context:component-scan>
2.2 Spring新注解
使用上面的注解不能全部代替xml配置文件,还需要使用注解替代的匹配如下:
- 非自定义的Bean的配置:<bean>
- 加载properties文件的配置:<context:property-placeholder>
- 组件扫描的配置:<context:component-scan>
- 引入其他组件:<import>
3. Spring成Junit
3.1 原始Junit测试Spring的问题
在测试类中,每个测试方法都有以下两行代码:
ApplicationContext app = new ClassPathXmlApplicationContext("bean.xml");
IAccountService as = app.getBean("accountService", IAccountService.class);
这两行代码是获取容器,如果不写的话,会提示空指针异常
3.2 上述问题的解决方案
- 让SpringJunit负责创建Spring容器,但是需要将配置文件的名称告诉他
- 将需要测试Bean直接在测试类中注入
3.3 Spring集成Junit的步骤
- 导入Spring集成Junit的坐标
- 使用Runwith注解替换原来的运行期
- 使用@ContextConfiguration指定配置文件或配置类
- 使用@Autowired注入需要测试的对象
- 创建测试方法进行测试