`

利用工厂实现IOC

阅读更多
ioc.properties文件内容(配置文件):

#接口=实现类
com.kay.struts.dao.UserDAO=com.kay.struts.dao.impl.UserDAOImpl



工厂类:
package com.kay.struts.common;

import java.io.InputStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;

public final class IocUtil
{
    
//文件路径
    private static final String filePath ="com/kay/struts/common/ioc.properties";
    
private static Map<Class,Object> map;
    
    
/**
     * 初始化方法
     * 
@return
     
*/
    
private static Map init(){
        InputStream input 
= IocUtil.class.getClassLoader().getResourceAsStream(filePath);
        
        Properties pro 
= new Properties();
        
try
        {
            pro.load(input);
            input.close();
            
//获得key集合
            Iterator iter = pro.keySet().iterator();
            String key 
= "";
            String value 
= "";
            map 
= new HashMap<Class,Object>();
            
while(iter.hasNext()){
                key 
= (String) iter.next();
                value 
= pro.getProperty(key);
                Class cla 
= Class.forName(key);
                Object obj 
= Class.forName(value).newInstance();
                map.put(cla, obj);
            }
            
return map;
        }
        
catch (Exception e)
        {
            e.printStackTrace();
            
return null;
        }
    }
    
    
public static Object lookup(Class cls){
        
if(map == null){
            map 
= new HashMap<Class,Object>();
            init();
        }
        Object obj 
= map.get(cls);
        
if(obj != null){
            
return obj;
        }
        
return null;
    }
    
}


UserDAO接口:
package com.kay.struts.dao;

import com.kay.struts.common.exception.DAOException;
import com.kay.struts.vo.User;

public interface UserDAO
{
    
public User findByNameAndPass(String name,String pass) throws DAOException;
}

UserDAO 接口实现类:
package com.kay.struts.dao.impl;

import com.kay.struts.common.exception.DAOException;
import com.kay.struts.dao.UserDAO;
import com.kay.struts.vo.User;

public class UserDAOImpl
        
implements UserDAO
{

    
public User findByNameAndPass(String name, String pass)
            
throws DAOException
    {
        User user 
= null;
        
if(name.equals("tom"&& pass.equals("123")){
            user 
= new User();
            user.setId(
1);
            user.setName(name);
            user.setPass(pass);
        }
        
return user;
    }

}

调用方法:
UserDAO dao = (UserDAO) IocUtil.lookup(UserDAO.class);
分享到:
评论

相关推荐

    IoC容器的设计(利用反射、注解和工厂模式实现)

    1. 利用注解、反射和工厂模式设计一个简单的IoC容器 2. 该IoC容器包含3个注解和一个IoC容器类(AnnotationConfigApplicationContext),其定义如下: 注解 含义 @Component 标注Bean @Autowired 标注需要被注入的...

    利用Java的反射与代理实现IOC模式

    在这个主题中,我们将深入探讨Java反射和动态代理如何帮助我们实现IOC。 首先,让我们理解Java反射。反射允许程序在运行时检查类、接口、字段和方法的信息,并且能够动态地创建对象和调用方法。在IOC中,反射用于在...

    工厂模式的测试并有spring ioc的简单实现

    通过理解和实践这些例子,我们可以深入理解工厂模式的精髓,以及Spring如何通过IoC实现组件的松耦合。同时,对于【abstactFactory】,我们可以期待看到如何在Spring环境中实现更复杂的对象族创建。测试这些代码时,...

    工厂模式的IoC应用

    Spring框架是Java领域实现IoC的典型代表,通过依赖注入(Dependency Injection,简称DI)来体现这一原则。工厂模式则是一种常用的对象创建型设计模式,它提供了一种创建对象的最佳方式。当Spring框架结合工厂模式时...

    手写简单实现ioc、aop事务demo

    在这个“手写简单实现ioc、aop事务demo”中,我们将探讨如何通过工厂模式和动态代理来实现这些概念。 首先,让我们了解IOC的核心思想。在传统的编程中,对象创建和管理的控制权在程序员手中,而IOC则是将这种控制权...

    一个简单的IOC容器实现

    在IT领域,Spring框架是Java开发中的重要工具,特别是其核心特性——依赖注入(Dependency Injection,简称DI),也被称为...通过深入学习和实践,我们可以更好地利用Spring的IOC容器来构建更加健壮和灵活的软件系统。

    Java进阶之手写实现IoC和AOP共16页.pdf.zi

    在手写实现IoC的过程中,通常会涉及到接口定义、工厂类、依赖注入以及容器的设计等步骤。例如,可以创建一个配置文件或注解来声明对象及其依赖,然后编写解析这些配置的代码,根据配置信息创建并装配对象。 AOP的...

    一个简单的模仿spring的ioc实现

    这个“一个简单的模仿spring的ioc实现”项目旨在帮助开发者理解Spring Ioc的核心概念,并通过自己的代码实现来加深对这一机制的理解。 首先,Spring Ioc的主要目标是解耦应用程序组件。它通过管理对象的生命周期和...

    Spring ioc源码解读

    简单来说,IoC容器就是一个工厂,它可以创建、配置并管理Bean对象。 - **BeanFactory**:这是Spring提供的最基础的IoC容器接口,定义了一些用于获取Bean实例的基础方法。如`getBean`用于获取指定名称的Bean实例;`...

    ioc.zip_ioc_ioc基于_反射

    在实际项目中,通过这样的简单实现,我们可以理解Spring是如何利用反射和XML配置来实现IOC的。但实际Spring框架还包含了更多高级特性,如注解驱动的配置、自动装配、AOP(面向切面编程)、数据访问集成等,这些都是...

    Java反射_Spring IOC

    Spring通过XML配置、注解或Java配置来实现IOC,使得开发者可以轻松地装配和管理应用程序组件。 Spring的DI可以通过反射实现。在容器初始化时,它会读取配置文件,使用反射创建和配置对象。当一个类需要另一个类作为...

    Springioc注入Demo

    Spring IOC(Inversion of Control,控制反转)是Spring框架的核心特性,它将对象的创建和管理权交由Spring容器来负责,从而实现了依赖倒置,增强了代码的可测试性和可维护性。DI(Dependency Injection,依赖注入)...

    IoC和Javascript

    1. **模块化**:通过模块系统实现IoC,每个模块负责自己的功能,并通过导出接口与其他模块通信。 2. **依赖注入**:手动或自动地将依赖关系注入到对象中,而不是让对象自己查找或创建依赖。 3. **解耦**:IoC帮助...

    手写一个SpringIoc容器

    通过实现这样一个自定义的Spring IOC容器,我们可以更深入地理解Spring是如何工作的,以及如何使用IoC和DI原则来设计和构建软件。这将有助于提高我们的编程技巧和设计能力,特别是在大型企业级应用开发中。

    spring ioc

    Spring 提供了两种主要的 IOC 实现方式:基于 XML 的配置和基于注解的配置。在 XML 配置中,我们会在一个或多个 XML 文件中定义 Bean 及它们的依赖关系。例如: ```xml ``` 在上面的例子中,`exampleBean` 的...

    maven-spring-ioc

    在本教程中,我们将深入探讨Spring如何通过配置文件实现IoC。 ### 1. Spring IoC概述 IoC(Inversion of Control)是一种设计原则,它将控制权反转,由框架或容器负责管理对象的创建和依赖关系的建立,而不是由...

    spring ioc思维导图源文件

    - **依赖注入(DI,Dependency Injection)**:是IOC的一种实现方式,Spring通过DI管理对象的依赖关系,即在运行时将依赖的对象注入到需要它们的组件中。 **2. Spring容器** - **Bean工厂(BeanFactory)**:...

    Spring IOC容器实现分析

    ### Spring IOC容器实现分析 #### 一、Spring IOC容器概览 Spring框架作为一款轻量级的开源框架,其核心之一便是IOC(Inversion of Control)容器。该容器的主要功能在于管理和控制对象间的依赖关系,使得开发人员...

    自已实现spring ioc功能代码 jdk1.6的一些新特性

    尽管这只是一个简单的实现,但它可以帮助我们理解Spring的IoC机制,并让我们能够利用Java 1.6的新特性编写更高效、更易维护的代码。然而,实际的Spring框架提供了许多高级功能,如AOP(面向切面编程)、事务管理、...

Global site tag (gtag.js) - Google Analytics