1、配置來至bean.xml
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:bean.xml") //表示在編譯完成后在類路徑下的beean.xml文件
public class AccountServiceTest {
@Autowired
private IAccountService as;
@Test
public void testFindAll() {
}
}
bean.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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!--配置service--> <bean id="accountService" class="com.ruankao.service.Impl.AccountServiceImpl"> <!--注入dao--> <property name="accountDao" ref="accountDao"></property> </bean> <!--配置dao對象--> <bean id="accountDao" class="com.ruankao.dao.Impl.AccountDaoImpl"> <!--注入QueryRunner--> <property name="runner" ref="runner"></property> </bean> <bean id="runner" class="org.apache.commons.dbutils.QueryRunner"> <!--配置數據源--> <constructor-arg name="ds" ref="dataSource"></constructor-arg> </bean> <!--配置數據源--> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <!--連接數據庫的必備信息--> <property name="driverClass" value="com.mysql.jdbc.Driver"></property> <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/ruankaowang?characterEncoding=UTF-8"></property> <property name="user" value="root"></property> <property name="password" value="123456"></property> </bean> </beans>
pom.xml的配置
<packaging>jar</packaging> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.0.2.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>5.0.2.RELEASE</version> </dependency> <dependency> <groupId>commons-dbutils</groupId> <artifactId>commons-dbutils</artifactId> <version>1.4</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.6</version> </dependency> <dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version>0.9.1.2</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency>
目錄的展示
2.配置來至Class
/**
* 使用Junit單元測試,測試我們的配置
Spring整合junit的配置
1.導入spring整合junit的jar(坐標)
2.使用Junit提供的一個注解把原有的mian方法替換了,替換成spring提供的@Runwith
3.告知spring的運行期,spring的ioc創建是基於xml還是注解的,並且我說明位置
@ContextConfiguration
localtions:指定xml文件的位置,加上classpath關鍵字,表示在類路徑下
class:注定注解類所在的位置
當我們使用spring 5.x版本的時候,要求junit的jar必須是4.12及以上
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes=SpringConfiguration.class)
public class AccountServiceTest {
@Autowired
private IAccountService as;
@Test
public void testFindAll() {
//init();
//3.執行方法
List<Account> accounts = as.findAllAccount();
for(Account account : accounts){
System.out.println(account);
}
}
SpringConfiguration類
Configration
作用:指定當前類是一個配置類
細節:當配置類作為AnnotationConfigApplicationContext對象創建的參數時,該注解可用不寫
ComponentScan
作用:用於通過注解指定spring在創建容器時要掃描的包
屬性:
value:它和basePackages的作用是一樣的,都是用於指定創建容器時要掃描的包我們使用次注解就等用於在xml中配置了:
<context:component-scan base-package="com.ruankao"></context:component-scan>
Bean
作用:用於把當前方法的返回值作為bean對象存入spring的ioc容器中
屬性:
name:用於指定bean的id。當不寫時,默認值是當前放的名稱
細節:
當我們使用注解配置方法時,如果方法有參數,spring框架會去容器中查找有沒有可用的bean對象。
查找的方式和Autowired注解的作用是一樣的。
Import
作用:用於導入其它的配置類
屬性:
value:用於指定其他配置類的字節碼
當我們使用Import的注解之后,有Import注解的類就是父配置類而,導入的都是子配置類
PropertySource
作用:用於指定properties文件的位置
屬性:
value:指定文件的名稱和路徑
關鍵字:classpath,表示類路徑下
*/
@ComponentScan(basePackages = "com.ruankao")
@Import(JdbcConfig.class)
@PropertySource("classpath:jdbcConfig.properties")
public class SpringConfiguration {
}
public class JdbcConfig {
@Value("${jdbc.driver}")
private String driver;
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.username}")
private String username;
@Value("${jdbc.password}")
private String password;
/**
* 用於創建一個QueryRunner對象
* @param dataSource
* @return
*/
@Bean(name = "runner")
public QueryRunner createQueryRunner(@Qualifier("dataSource2") DataSource dataSource){
return new QueryRunner(dataSource);
}
/**
* 創建數據源對象
*/
@Bean(name= "dataSource")
public ComboPooledDataSource createDataSource() {
try {
ComboPooledDataSource ds=new ComboPooledDataSource();
ds.setDriverClass(driver);
ds.setJdbcUrl(url);
ds.setUser(username);
ds.setPassword(password);
return ds;
} catch (PropertyVetoException e) {
//e.printStackTrace();
throw new RuntimeException(e);
}
}
/**
* 創建數據源對象
*/
@Bean(name= "dataSource2")
public ComboPooledDataSource createDataSource2() {
try {
ComboPooledDataSource ds=new ComboPooledDataSource();
ds.setDriverClass(driver);
ds.setJdbcUrl(url);
ds.setUser(username);
ds.setPassword(password);
return ds;
} catch (PropertyVetoException e) {
//e.printStackTrace();
throw new RuntimeException(e);
}
}
}
jdbcConfig.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ruankaowang?characterEncoding=utf-8
jdbc.username=root
jdbc.password=123456

