[Spring] IOC - study

Spring IOC简单注入例子,本例子使用JUnit进行测试。Spring版本:3.2


 

项目结构:

Spring所需引用的JAR包:


Spring XML配置:

springContext.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">
    <import resource="dao.xml"/>
    <import resource="service.xml"/>
</beans>

dao.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">
    <bean name="accountDaoFactory" class="com.my.dao.AccountFactory" abstract="true"></bean>
    <bean name="accountDAO" class="com.my.dao.mysql.AccountDAO" parent="accountDaoFactory"></bean>
</beans>

service.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">
    <bean name="accountServiceFactory" class="com.my.service.AccountServiceFactory" abstract="true"></bean>
    <bean name="accountService" class="com.my.service.mysql.AccountService" parent="accountServiceFactory">
        <property name="account" ref="accountDAO"></property>
    </bean>
</beans>

 

DAO的java class:

package com.my.dao;

public abstract class AccountFactory {
    /*
     * Fin account by id
     */
    public abstract Integer findAccount(Integer accountID);
}
package com.my.dao.mysql;

public class AccountDAO extends com.my.dao.AccountFactory {
    /*
     * Find account by account id
     */
    @Override
    public Integer findAccount(Integer accountID) {
        return accountID;
    }
}

 

Service的java class:

package com.my.service;

public abstract class AccountServiceFactory {
    protected com.my.dao.AccountFactory account;

    public com.my.dao.AccountFactory getAccount() {
        return account;
    }

    public void setAccount(com.my.dao.AccountFactory account) {
        this.account = account;
    }
    
    /*
     * Find account by id
     */
    public abstract Integer finAccount(Integer accountID);
}
package com.my.service.mysql;

public class AccountService extends com.my.service.AccountServiceFactory {
    @Override
    public Integer finAccount(Integer accountID) {
        return account.findAccount(accountID);
    }
}

 

测试类:

package com.my.test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.my.service.AccountServiceFactory;

public class SpringTest {
    private ApplicationContext context = new ClassPathXmlApplicationContext("springContext.xml");
    
    public SpringTest(){
    }
    
    public Integer findAccount(Integer accountID){
        AccountServiceFactory account = (AccountServiceFactory)context.getBean("accountService");
        Integer id = account.finAccount(100);
        return id;
    }
}

JUnit测试:

package com.my.test;

import static org.junit.Assert.*;

import org.junit.Before;
import org.junit.Test;

public class SpringTestTest {

    private SpringTest sp = new SpringTest();

    @Before
    public void setUp() throws Exception {
    }

    @Test
    public void testFindAccount() {
        Integer accountID = 100;
        Integer result = sp.findAccount(accountID);
        assertEquals((Integer)100, result);
        System.out.println(result);
    }
}

 

运行JUnit测试结果:

posted @ 2014-09-09 13:56  横渡  阅读(388)  评论(0编辑  收藏  举报