java的Test 如何使用@Autowired注解


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

 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM