• [Spring] IOC


    Spring Annotation使用例子。

    与XML配置的例子一样:http://www.cnblogs.com/HD/p/3962541.html


    Project结构:


    配置文件: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" xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
        http://www.springframework.org/schema/context               
        http://www.springframework.org/schema/context/spring-context-2.5.xsd">
        
        <context:component-scan base-package="com.my" />
        
    </beans>

    DAO:

    package com.my.dao;
    
    import org.springframework.stereotype.Repository;
    
    @Repository
    public abstract class AccountDaoFactory {
        /*
         * Fin account by id
         */
        public abstract Integer findAccount(Integer accountID);
    }
    package com.my.dao.mysql;
    
    import org.springframework.stereotype.Repository;
    
    @Repository(value="accountDao")
    public class AccountDao extends com.my.dao.AccountDaoFactory {
        /*
         * Find account by account id
         */
        @Override
        public Integer findAccount(Integer accountID) {
            return accountID;
        }
    }

    Service:

    package com.my.service;
    
    import javax.annotation.Resource;
    
    import com.my.dao.AccountDaoFactory;
    
    public abstract class AccountServiceFactory {
        @Resource(name="accountDao")
        protected AccountDaoFactory accountDao;
        
        public abstract Integer findAccount(Integer accountID);
    
        public AccountDaoFactory getAccountDAO() {
            return accountDao;
        }
    
        public void setAccountDAO(AccountDaoFactory accountDAO) {
            this.accountDao = accountDAO;
        }
    }
    package com.my.service.mysql;
    
    import org.springframework.stereotype.Service;
    
    import com.my.service.AccountServiceFactory;
    
    @Service(value="accountService")
    public class AccountService extends AccountServiceFactory {
    
        @Override
        public Integer findAccount(Integer accountID) {
            return accountDao.findAccount(accountID);
        }
        
    }

    Controller:

    package com.my.controller;
    
    import javax.annotation.Resource;
    
    import org.springframework.stereotype.Controller;
    
    import com.my.service.AccountServiceFactory;
    
    @Controller
    public class SpringController {
        @Resource(name="accountService")
        private AccountServiceFactory accountService;
        
        public AccountServiceFactory getAccount() {
            return accountService;
        }
    
        public void setAccount(AccountServiceFactory account) {
            this.accountService = account;
        }
        
        public Integer findAccount(Integer accountID){
            return accountService.findAccount(accountID);
        }
        
    }

    JUnit测试:

    package com.my.controller;
    
    import static org.junit.Assert.*;
    
    import org.junit.Before;
    import org.junit.Test;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class SpringControllerTest {
        private SpringController springController;
        private ApplicationContext context;
    
        @Before
        public void setUp() throws Exception {
            context = new ClassPathXmlApplicationContext("springContext.xml");
            // Use class load
            springController = (SpringController)context.getBean(SpringController.class);
        }
    
        @Test
        public void testFindAccount() {
            Integer id = 100;
            Integer result = springController.findAccount(id);
            assertEquals(id, result);
            System.out.println(result);
        }
    
    }

    输出结果:

  • 相关阅读:
    MAC使用小技巧(二)
    Swift # GET&POST请求 网络缓存的简单处理
    iOS:Block写递归
    Swift # 项目框架
    uva 11665 Chinese Ink (几何+并查集)
    uva 11859 Division Game
    uva 11916 Emoogle Grid (BSGS)
    uva 11754 Code Feat (中国剩余定理)
    hdu 4347 The Closest M Points(KD树)
    2013多校训练赛第四场 总结
  • 原文地址:https://www.cnblogs.com/HD/p/3962879.html
Copyright © 2020-2023  润新知