首页 > 代码库 > [Spring] IOC - study

[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测试结果:

[Spring] IOC - study