`

spring bean

 
阅读更多

简单的xml配置文件 
Java代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans>  
  3.     <bean id="userDAO" class="com.king.dao.impl.UserDAOImpl"></bean>  
  4.       
  5.     <bean id="userService" class="com.king.service.impl.UserServiceImpl">  
  6.         <property name="userDAO" ref="userDAO"></property>  
  7.     </bean>  
  8. </beans>  

BeanFactory接口 
Java代码  收藏代码
  1. public interface BeanFactory  
  2. {  
  3.     public Object getBean(String name);  
  4. }  

实现BeanFactory的接口 
Java代码  收藏代码
  1. public class ClassPathXmlApplicationContext implements BeanFactory{  
  2.     private Map<String,Object> beans = new HashMap<String,Object>(); // map for store beans  
  3.       
  4.          /***constructor****/  
  5.     public ClassPathXmlApplicationContext()   
  6.     {  
  7.         SAXBuilder sb = new SAXBuider();  
  8.         Document doc = sb.builder(this.getClass().getClassLoader().getResourceAsStream("beans.xml"));//read the xml file in classpath  
  9.         Element root = doc.getRootElement(); // beans  
  10.         List list = root.getChildren("bean"); // all beans in that list  
  11.           
  12.         int size = list.size();  
  13.           
  14.         for(int i = 0; i< size; i++)  
  15.         {  
  16.             Element element = list.get(i);  
  17.               
  18.             String id = element.getAttributeValue("id"); // get id  
  19.             String clazz = element.getAttributeValue("class"); // get class  
  20.               
  21.             Object o = Class.forName(clazz).newInstance(); // reflect   
  22.             beans.put(id,o); // put into the map  
  23.               
  24.             List<Element> properties = (List<Element>) element.getChildren("property"); // get property config,for DI  
  25.               
  26.             for(Element property : properties)  
  27.             {  
  28.                 String name = property.getAttributeValue("name"); // get name  
  29.                 String ref = property.getAttributeValue("ref"); // get reference bean name  
  30.                   
  31.                 Object refBean = beans.get(ref); // get reference bean form map  
  32.                   
  33.                 String methodName = "set" + name.subString(0,1).toUpperCase() + name.subString(1); // setter method name  
  34.                 System.out.println(methodName);  
  35.                   
  36.                 Method m = o.getClass().getMethod(methodName,refBean.getClass.getInterfaces()[0]); // get method parameters   
  37.                 m.invoke(o,refBean); // execute to inject reference bean   
  38.             }  
  39.         }  
  40.     }  
  41.       
  42.     public Object getBean(String name)  
  43.     {  
  44.         return beans.get(name);  
  45.     }  


调用测试: 
Java代码  收藏代码
  1. public SpringTest{  
  2.     
  3.     @Test  
  4.     public void testAdd()  
  5.     {  
  6.         BeanFactory factory = new ClassPathXmlApplicationContext();  
  7.         UserService service = (UserService) factory.getBean("userService");  
  8.   
  9.         User u = new User();  
  10.         service.add(u);  
  11.     }  
  12. }  
分享到:
评论

相关推荐

    spring bean的生命周期

    - **XML配置**:在传统的Spring应用中,Bean的定义通常写在XML配置文件中,如`springbean-xml`中的配置。 - **注解配置**:使用`@Component`,`@Service`,`@Repository`和`@Controller`注解标记类,配合`@...

    spring bean XML配置入门

    在本文中,我们将深入探讨Spring框架中的Bean XML配置,这是Spring的核心特性之一,它允许我们定义、管理和装配应用中的对象。我们将围绕以下知识点展开: 1. **Spring框架基础**: Spring是一个开源的Java平台,...

    Spring Bean创建初始化流程.docx

    在Spring框架中,Bean的创建和初始化是IoC(Inversion of Control)容器的核心功能,这一过程涉及到多个步骤。以下是对Spring Bean创建初始化流程的详细解释: 1. **初始化ApplicationContext**: 开始时,通过`...

    Spring bean 动态注册,jar包热替换

    Spring bean 一般通过配置文件和注解进行加载,如果要实现jar或class文件,动态实现spring bean 的动态加载,并通过UrlClassLoader完成jar和class文件的加载。可以实现jar的热替换。spring的bean动态加载则需要对...

    Spring Bean重复执行两次(实例被构造两次)问题分析

    在Spring框架中,Bean的生命周期管理是其核心特性之一,然而有时我们可能会遇到Spring Bean重复执行两次的问题,即实例被构造两次。这个问题可能是由多种原因引起的,涉及到Spring的初始化过程和容器的行为。以下是...

    实例化Spring bean的两种工厂方法

    在Spring框架中,bean的实例化是其核心功能之一,它允许我们管理应用程序中的对象生命周期。本篇将详细探讨两种工厂方法——实例工厂方法和静态工厂方法,用于创建Spring Bean。 首先,我们要理解Spring Bean的概念...

    springBean加载过程源码解析文档,附有代码类名和行数

    Spring Bean 加载过程源码解析文档 Spring Bean 加载过程是 Spring 框架中最核心的部分之一,涉及到 ApplicationContext 的初始化、Bean 的加载和注册等过程。在 Spring Boot 应用程序中,SpringApplication 负责...

    spring bean 属性总结

    ### Spring Bean 属性详解 Spring框架是Java平台上的一个开源框架,主要用来简化企业级应用程序的开发。在Spring中,核心概念之一就是Bean,它是一个简单的Java对象,由Spring IoC容器管理。Spring通过XML配置文件...

    @PostConstruct注解用来获取springbean对象.txt

    获取springbean对象

    Spring Bean 加载顺序 .

    在Spring框架中,Bean的加载顺序是理解Spring IoC(Inversion of Control,控制反转)容器工作原理的关键部分。这个过程涉及到Bean定义的解析、实例化、初始化等多个步骤。让我们详细探讨Spring Bean加载顺序的各个...

    spring bean life cycle

    在Spring框架中,Bean生命周期是核心概念之一,它涉及到Bean的创建、初始化、使用和销毁等阶段。了解和掌握Bean生命周期对于开发高质量的Spring应用至关重要。以下是对Spring Bean生命周期的详细解析。 首先,Bean...

    spring bean的生命周期测试代码

    在Spring框架中,Bean的生命周期管理是其核心特性之一,它允许开发者控制Bean从创建到销毁的整个过程。本资源提供了在Spring 4.2环境下关于Bean生命周期的测试代码,帮助我们深入理解这一关键概念。 首先,让我们...

    一个springbean文件

    bean文件 springbean文件

    普元eos-springbean开发

    ### 普元EOS-SpringBean开发概述 普元EOS平台是一款面向企业级应用的低代码开发平台,它集成了大量的开发工具和技术框架,帮助企业快速构建高质量的应用系统。本文将围绕“普元EOS-SpringBean开发”这一主题展开...

    Spring bean初始化及销毁你必须要掌握的回调方法.docx

    在Spring框架中,管理Bean的生命周期是至关重要的。Bean的生命周期包括初始化、正常运行以及销毁三个阶段。在这些阶段,Spring允许开发者定义自定义的行为,以便在特定时刻执行必要的操作。下面将详细介绍如何通过...

    创建SpringBean配置工具类

    创建SpringBean配置工具类(安全)如: &lt;bean id=... scope="prototype"&gt;&lt;/bean&gt;

    SPRING BEAN的销毁 项目文件(ECLIPSE)

    SPRING BEAN的销毁 项目文件(ECLIPSE)。 之前各种测试,一直有问题。后来明白,容器啊!容器啊!!!!!容器灰常重要,使用容器促使BEAN的生命周期。 想了两天,这个问题,SPRING从入门到精通这本书真没处理好...

    Spring bean 管理

    在Spring中,Bean的管理包含多个方面:创建Bean实例、配置Bean属性、控制Bean的生命周期以及Bean作用域的定义。接下来将详细解释这些知识点。 1. Spring的工厂类: Spring通过工厂模式设计了一系列工厂类来创建对象...

    spring Bean的作用域之间有什么区别1

    Spring Bean 的作用域之间有什么区别:Bean的作用域: 可以通过scope 属性来指定bean的作用域 ①singleton: 默认值。当IOC容器

    Spring Bean的初始化和销毁实例详解

    Spring Bean的初始化和销毁实例详解 Spring Bean的初始化和销毁是Spring框架中一个非常重要的概念,它们都是Bean生命周期中不可或缺的一部分。在Spring框架中,我们可以使用多种方式来控制Bean的初始化和销毁,以下...

Global site tag (gtag.js) - Google Analytics