`
evget
  • 浏览: 144737 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
文章分类
社区版块
存档分类

Spring的非XML格式bean声明

阅读更多
文章关键字:|Spring|XML|bean|java|测试|

         spring除了支持XML格式的bean声明外,还对属性文件格式和编程方式注册也提供了支持。
  
         首先先创建一个用于测试的bean对象的java文件,TextStyle.java。

package lm.java.spring.bean.factory.test;

public class TextStyle {
    private String fontName = "default";

    private int fontSize = 9;

    private boolean bold = false;

    private boolean italic = false;

    public String getFontName() {
        return fontName;
    }

    public void setFontName(String fontName) {
        this.fontName = fontName;
    }

    public int getFontSize() {
        return fontSize;
    }

    public void setFontSize(int fontSize) {
        this.fontSize = fontSize;
    }

    public boolean isBold() {
        return bold;
    }

    public void setBold(boolean bold) {
        this.bold = bold;
    }

    public boolean isItalic() {
        return italic;
    }

    public void setItalic(boolean italic) {
        this.italic = italic;
    }
}

         一、对于读取属性文件这种bean声明,使用org.springframework.beans.factory.support.PropertiesBeanDefinitionReader装载bean声明。

例:

1.在ClASSPATH下创建一个styles.properties文件。
 
myStyle.class=lm.java.spring.bean.factory.test.TextStyle
myStyle.fontName=Arial
myStyle.fontSize=12

yourStyle.class=lm.java.spring.bean.factory.test.TextStyle
yourStyle.fontName=Times
yourStyle.fontSize=10
yourStyle.bold=true
yourStyle.italic=true



2.创建一个PropertiesBeanFactoryTest测试类。

package lm.java.spring.bean.factory.test;

import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.beans.factory.support.PropertiesBeanDefinitionReader;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;

public class PropertiesBeanFactoryTest {

    public static void main(String[] args) {
        // ClassPathResource的默认路径是工程下面的bin文件夹为根路径

        Resource resource = new ClassPathResource("lm\\java\\spring\\bean\\factory\\test\\styles.properties");
       
        // 使用DefaultListableBeanFactory和PropertiesBeanDefinitionReader配置bean工厂

        DefaultListableBeanFactory dbf = new DefaultListableBeanFactory();
        PropertiesBeanDefinitionReader reader = new PropertiesBeanDefinitionReader(dbf);
        reader.loadBeanDefinitions(resource);
       
        TextStyle dfmyStyle = (TextStyle) dbf.getBean("myStyle");

        System.out.println(dfmyStyle.getFontName() + " , " +
                dfmyStyle.getFontSize() + " , " + dfmyStyle.isBold() + "," +
                dfmyStyle.isItalic());
       
        TextStyle dbfyourStyle = (TextStyle) dbf.getBean("yourStyle");

        System.out.println(dbfyourStyle.getFontName() + " , " +
                dbfyourStyle.getFontSize() + " , " + dbfyourStyle.isBold() + "," +
                dbfyourStyle.isItalic());
    }
}

运行后的结果

Arial , 12 , false,false
Times , 10 , true,true

         二、对于编程方式注册bean声明,可以使用Spring提供的org.springframework.beans.support.RootBeanDefinition类和org.springframework.beans.MutablePropertyValues类协作装载bean声明。

例:创建一个RootBeanDefinitionTest测试类。

package lm.java.spring.bean.factory.test;

import org.springframework.beans.MutablePropertyValues;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.beans.factory.support.RootBeanDefinition;

public class RootBeanDefinitionTest {
    public static void main(String[] args) {
       
        DefaultListableBeanFactory dbf = new DefaultListableBeanFactory();
       
        MutablePropertyValues myStylePv = new MutablePropertyValues();
        myStylePv.addPropertyValue("fontName", "Arial");
        myStylePv.addPropertyValue("fontSize", "12");
        RootBeanDefinition myStyleRbd = new RootBeanDefinition(TextStyle.class, myStylePv);
        dbf.registerBeanDefinition("myStyle", myStyleRbd);
       
        MutablePropertyValues yourStylePv = new MutablePropertyValues();
        myStylePv.addPropertyValue("fontName", "Times");
        myStylePv.addPropertyValue("fontSize", "10");
        myStylePv.addPropertyValue("bold", "true");
        myStylePv.addPropertyValue("italic", "true");
        RootBeanDefinition yourStyleRbd = new RootBeanDefinition(TextStyle.class, yourStylePv);
        dbf.registerBeanDefinition("yourStyle", yourStyleRbd);
       
        TextStyle dfmyStyle = (TextStyle) dbf.getBean("myStyle");

        System.out.println(dfmyStyle.getFontName() + " , " +
                dfmyStyle.getFontSize() + " , " + dfmyStyle.isBold() + "," +
                dfmyStyle.isItalic());
       
        TextStyle dbfyourStyle = (TextStyle) dbf.getBean("yourStyle");

        System.out.println(dbfyourStyle.getFontName() + " , " +
                dbfyourStyle.getFontSize() + " , " + dbfyourStyle.isBold() + "," +
                dbfyourStyle.isItalic());
    }
}

运行后的结果

Arial , 12 , false,false
Times , 10 , true,true

未完,原文地址:http://www.evget.com/zh-CN/Info/ReadInfo.aspx?id=9172
分享到:
评论

相关推荐

    spring bean XML配置入门

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

    spring 重新动态加载数据库或xml中的bean,可以不用重启tomcat

    spring 重新动态加载数据库或xml中的bean,可以不用重启tomcat

    spring配置文件:整理总结Spring中XML配

    ### Spring配置文件:整理与总结Spring中XML配置的最佳实践 #### 概述 Spring框架作为一个强大的Java应用框架,在企业级应用开发中占据了重要的地位。它为普通的Java对象(Plain Old Java Objects, POJOs)提供了...

    spring IOC反射装载bean

    在这个特定的"spring IOC反射装载bean"的主题中,我们将深入探讨Spring如何通过XML配置文件来加载和管理Bean,并利用Java的反射机制来实例化这些Bean。 首先,Spring容器通过读取XML配置文件来获取Bean的定义。这些...

    spring xml配置的12個技巧

    Spring框架的核心特性之一就是依赖注入(DI)和控制反转(IoC),而这些功能主要是通过XML配置文件来实现的。随着项目的规模不断增大,如何管理和优化这些XML配置文件就变得非常关键。下面,我们将详细探讨Spring ...

    详解Spring中使用xml配置bean的细节

    Spring 中使用 XML 配置 Bean 的细节 Spring 框架中使用 XML 配置 Bean 是一种常见的方式,它可以帮助开发者轻松地管理 Bean 的依赖关系和生命周期。在本文中,我们将详细介绍 Spring 中使用 XML 配置 Bean 的细节...

    Spring之核心容器bean

    DI允许你将bean的依赖关系明确地声明出来,而不是硬编码在代码中。这样可以提高代码的可测试性、可维护性和松耦合性。在上面的例子中,`name`属性的注入就是依赖注入的一种体现。 **作用域(Scope)** Spring bean...

    在非spring注解类中使用spring容器中的bean_普通类中使用yml配置文件中的配置信息

    然而,在某些情况下,我们可能需要在非Spring注解的类中访问Spring容器中的Bean,或者在这些类中使用YAML配置文件中的配置信息。本篇将详细介绍如何在这样的场景下实现这一目标。 首先,让我们来理解如何在非Spring...

    spring bean的生命周期

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

    Spring装配Bean教程之XML安装配置bean详解

    在Spring框架中,XML配置是早期最常用的配置方式,它提供了详细且灵活的方式来定义和管理Bean的生命周期。本文将深入探讨Spring如何通过XML配置来装配Bean。 首先,要创建XML配置,你需要创建一个新的XML文件,通常...

    webservice cxf spring整合返回list,bean,string,json,xml项目完整实例

    通过Apache CXF框架创建Web服务,并结合Spring框架进行管理,从而能够灵活地返回不同类型的数据,包括List、自定义Bean对象、纯文本String以及常见的数据交换格式JSON和XML。这种集成方式使得服务端能够更加便捷地...

    Spring框架xml注解配置方式实例

    7. **XML配置中的bean定义**:尽管大部分配置可以通过注解完成,但在某些情况下,我们仍需在XML文件中声明bean,例如,当需要自定义初始化方法、配置特定的bean属性,或者处理非Java组件(如数据库连接池)时。...

    Spring xml 方式配制的小demo

    本篇文章主要讲解Spring框架中的XML配置方式,帮助开发者理解如何通过XML配置文件来管理Bean的生命周期和装配。 1. **Spring XML配置基础** Spring框架的配置文件通常以`applicationContext.xml`命名,这是Spring...

    Spring使用XML配置声明式事务

    在Spring框架中,声明式事务管理是实现事务处理的一种高效且灵活的方式,它允许开发者通过XML配置或注解来定义事务边界,而无需在业务逻辑代码中显式地调用开始、提交或回滚事务的方法。这篇博文"Spring使用XML配置...

    spring创建bean简单示例

    使用XML配置文件(`beans.xml`)来声明Bean。在`resources`目录下创建此文件,并指定`MyService`类的Bean定义。 ```xml <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=...

    spring之xml配置对象创建的三种方式代码

    在XML配置中,我们可以通过`<bean>`标签来声明一个单例bean,如: ```xml <bean id="exampleBean" class="com.example.ExampleBean"/> ``` 上述配置会创建一个`ExampleBean`的实例,并在需要时提供给其他bean...

    Spring实例化Bean顺序

    首先,我们要知道Spring IoC容器是通过XML配置文件、注解或Java配置类来管理Bean的生命周期。Bean的实例化顺序取决于以下因素: 1. **定义顺序**:在XML配置中,如果Bean的定义顺序明确,那么按照它们在文件中的...

    模拟spring的xml配置文件注入

    XML配置文件用于声明应用程序中的bean及其依赖关系,例如类的实例化、属性设置、方法调用等。通过`<bean>`标签,我们可以创建和管理对象,而`<property>`标签则用来注入依赖。例如: ```xml <bean id="exampleBean...

    spring bean life cycle

    `@Component`注解的类会自动被Spring扫描并注册为Bean,而`@Configuration`类则提供了更高级别的配置方式,可以替代XML配置文件。 此外,Spring提供了一种名为BeanPostProcessor的接口,它允许我们自定义Bean实例化...

    Spring基于xml文件配置Bean过程详解

    Spring基于xml文件配置Bean过程详解 Spring 框架是一个功能强大且灵活的Java应用程序框架,它提供了一个完整的ioc容器,来管理Bean的生命周期。Spring框架基于xml文件配置Bean是指通过xml文件来配置Bean的创建过程...

Global site tag (gtag.js) - Google Analytics