`

Spring 2.X 深入了解 ------->Bean的基本操作

阅读更多

Spring Framework Module
1.Core Container:the Core,Beans,Context,and Expression Language modules
2.Data Access/Integration:JDBC,ORM,OXM,JMS and Transaction modules
3.Web :Web Web-Servlet,Web-Struts and Web-Porlet modules
4.AOP and Instrumentation
5.Test


Ioc容器:Inversion of control
依赖包: org.springframework,beans和org.springframework.context包

 

下面我们具体的说明怎么实现Spring2.5关于bean的操作

jar:spring-beans.jar,spring-context.jar,spring-core.jar,commons-logging-1.1.1.jar

下面介绍如何配置Spring的XML
有二种方式:
1.通过dtd方式配置XML
2.通过xsd方式配置XML
两种方式分别加上一下语句即可:
<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-2.5.xsd">
<beans>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN"
              "http://www.springframework.org/dtd/spring-beans-2.0.dtd">

具体的配置我这里给出例子:
<beans>
    <alias name="fromName" alias="toName" />

    <import resource="services.xml" />
    <import resource="resources/messageSource.xml" />
      <import resource="/resources/themeSource.xml" />

    <bean id="bean1" class="com.chenhailong.bean.People">
    </bean>
   
    <bean id="serviceLocator" class="com.foo.DefaultServiceLocator" />

    <bean id="exampleBean1" factory-bean="serviceLocator"
        factory-method="createInstance" />
</beans>

public class SpringBean {

    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "applicationMap.xml" });
        BeanFactory factory = context;
        People peo1 = (People) factory.getBean("bean1");
        peo1.setSex(true);
        System.out.println(peo1.isSex());
        Resource res = new FileSystemResource("cfg/applicationMap.xml");
        BeanFactory factory1 = new XmlBeanFactory(res);
        People peo = (People) factory1.getBean("bean1");
        peo.setName("cenhailong");
        System.out.println(peo.getName());
    }

}
 


NOTICE:
比如说,在com.example包下有一个叫 Foo的类,而Foo类有一个静态 的内部类叫Bar,那么在bean定义的时候, class属性必须这样写:
com.example.Foo$Bar
注意这里我们使用了$字符将内部类和外部类进行分隔

当采用构造器来创建bean实例时,Spring对class并没有特殊的要求, 我们通常使用的class都适用。也就是说,被创建的类并不需要实现任何特定的 接口,或以特定的方式编码,只要指定bean的class属性即可。不过根据所采用 的IoC类型,class可能需要一个默认的空构造器。

 

第一种形式也是最常见的形式是通过使用<ref/>标记指定bean属性的目标bean,通过该标签可以引用同一容器或父容器内的任何bean(无论是否在同一XML文件中)。XML 'bean'元素的值既可以是指定bean的id值也可以是其name值。

<ref bean="someBean"/>
第二种形式是使用ref的local属性指定目标bean,它可以利用XML解析器来验证所引用的bean是否存在同一文件中。local属性值必须是目标bean的id属性值。如果在同一配置文件中没有找到引用的bean,XML解析器将抛出一个例外。如果目标bean是在同一文件内,使用local方式就是最好的选择(为了尽早地发现错误)。

<ref local="someBean"/>
第三种方式是通过使用ref的parent属性来引用当前容器的父容器中的bean。parent属性值既可以是目标bean的id值,也可以是name属性值。而且目标bean必须在当前容器的父容器中。使用parent属性的主要用途是为了用某个与父容器中的bean同名的代理来包装父容器中的一个bean(例如,子上下文中的一个bean定义覆盖了他的父bean)。

通过<list/>、<set/>、<map/>及<props/>元素可以定义和设置与Java Collection类型对应List、Set、Map及Properties的值。
<!-- in the parent context -->
<bean id="accountService" class="com.foo.SimpleAccountService">
    <!-- insert dependencies as required as here -->
</bean>
<!-- in the child (descendant) context -->
<bean id="accountService"  <-- notice that the name of this bean is the same as the name of the 'parent' bean
      class="org.springframework.aop.framework.ProxyFactoryBean">
      <property name="target">
          <ref parent="accountService"/>  <-- notice how we refer to the parent bean
      </property>
    <!-- insert other configuration and dependencies as required as here -->
</bean>

<bean id="moreComplexObject" class="example.ComplexObject">
  <!-- results in a setAdminEmails(java.util.Properties) call -->
  <property name="adminEmails">
    <props>
        <prop key="administrator">administrator@example.org</prop>
        <prop key="support">support@example.org</prop>
        <prop key="development">development@example.org</prop>
    </props>
  </property>
  <!-- results in a setSomeList(java.util.List) call -->
  <property name="someList">
    <list>
        <value>a list element followed by a reference</value>
        <ref bean="myDataSource" />
    </list>
  </property>
  <!-- results in a setSomeMap(java.util.Map) call -->
  <property name="someMap">
    <map>
        <entry>
            <key>
                <value>an entry</value>
            </key>
            <value>just some string</value>
    </entry>
        <entry>
            <key>
                <value>a ref</value>
            </key>
            <ref bean="myDataSource" />
        </entry>
    </map>
  </property>
  <!-- results in a setSomeSet(java.util.Set) call -->
  <property name="someSet">
    <set>
        <value>just some string</value>
        <ref bean="myDataSource" />
    </set>
  </property>
</bean>

下面的例子展示了集合合并特性:
<beans>
<bean id="parent" abstract="true" class="example.ComplexObject">
    <property name="adminEmails">
        <props>
            <prop key="administrator">administrator@example.com</prop>
            <prop key="support">support@example.com</prop>
        </props>
    </property>
</bean>
<bean id="child" parent="parent">
    <property name="adminEmails">
        <!-- the merge is specified on the *child* collection definition -->
        <props merge="true">
            <prop key="sales">sales@example.com</prop>
            <prop key="support">support@example.co.uk</prop>
        </props>
    </property>
</bean>
<beans>
在上面的例子中,childbean的adminEmails属性的<props/>元素上使用了merge=true属性。当child bean被容器实际解析及实例化时,其 adminEmails将与父集合的adminEmails属性进行合并。

<null/>用于处理null值。Spring会把属性的空参数当作空字符串处理。以下的xml片断将email属性设为空字符串。

<bean class="ExampleBean">
  <property name="email"><value/></property>
</bean>
这等同于Java代码: exampleBean.setEmail("")。而null值则可以使用<null>元素可用来表示。例如:

<bean class="ExampleBean">
  <property name="email"><null/></property>
</bean>
上述的配置等同于Java代码:exampleBean.setEmail(null)。

0
0
分享到:
评论

相关推荐

    org.springframework.web.struts-sources-3.0.4.RELEASE.jar

    《Spring与Struts整合:深入理解org.springframework.web.struts-sources-3.0.4.RELEASE.jar》 在Java Web开发领域,Spring框架以其强大的依赖注入和面向切面编程能力,而Struts则以其优秀的MVC架构模式,共同构建...

    spring-framework-3.2.x-for-eclipse.rar

    《深入剖析Spring Framework 3.2.x:Eclipse开发环境搭建与源码探索》 Spring Framework作为Java领域中最重要的轻量级框架之一,其3.2.x版本在当时具有广泛的影响力。本文将针对《spring-framework-3.2.x-for-...

    spring-framework-3.2.x .zip----源码

    - 通过源码学习 SpEL 的语法和解析机制,可以深入了解 Spring 如何动态地操纵对象。 8. **AspectJ 支持** - Spring 3.2.x 中增强了对 AspectJ 的支持,包括注解驱动的切面和编译时织入,使得 AOP 的使用更为灵活...

    spring3.0,ssh

    标题中的"spring3.0,ssh"表明我们将讨论Spring框架的第三个主要版本(Spring 3.0)以及SSH(Struts、Spring、Hibernate)这三种技术的集成。SSH是Java Web开发中常用的三大开源框架,它们协同工作以构建高效、模块化...

    Spring5.x官网jar文件

    1. **spring-core**: 这是Spring框架的基础模块,提供了基本的容器功能,如Bean工厂和ApplicationContext,以及核心工具类。 2. **spring-beans**: 包含了用于描述和实例化Bean的XML和注解支持,以及处理Bean依赖的...

    Spring2.x集成Quartz调度框架

    **Spring2.x集成Quartz调度框架** 在Java应用开发中,常常需要进行任务调度,例如定时执行某些业务逻辑。Quartz是一款强大的、开源的作业调度框架,它支持复杂的调度策略和集群环境。Spring框架则提供了良好的企业...

    Spring3.X @MVC - (一)重要的配置文件

    2. **`&lt;mvc:annotation-driven&gt;`**: 此元素启用Spring MVC对注解的处理,使得我们可以在控制器类的方法上使用像@RequestMapping这样的注解来处理HTTP请求。它还提供了数据绑定、转换服务、验证等特性。 3. **`&lt;bean...

    spring4.x________

    在本文中,我们将深入探讨Spring 4.x的核心特性、优势以及如何在实际项目中应用。 一、核心特性 1. 支持Java 8:Spring 4.x全面支持Java 8,包括Lambda表达式、日期和时间API等,使得代码更加简洁和易读。 2. ...

    spring4.x 集成 jersey2.x 实现对外提供接口服务

    在本文中,我们将深入探讨如何将Spring 4.x框架与Jersey 2.x结合,以构建一个能够对外提供RESTful接口服务的系统。这个过程包括了配置、组件整合以及实际的API开发。以下是对整个集成过程的详细说明。 首先,让我们...

    spring bean XML配置入门

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

    Spring-Data-MongoDB3.2

    - 创建MongoDBTemplate实例:通过Spring的bean定义,自动配置MongoDBTemplate。 - 实现Repository接口:创建自定义的Repository接口,继承Spring Data MongoDB提供的基类,并定义所需的查询方法。 **5. 使用示例** ...

    Spring+3.x企业应用开发实战光盘源码,保证可用

    《Spring+3.x企业应用开发实战》是一本深入讲解如何使用Spring框架进行企业级应用程序开发的书籍。光盘源码是作者为了辅助读者理解和实践书中所讲述内容而提供的实际代码示例,确保了读者能够在实际操作中加深对...

    精通Spring4.x+企业应用开发实战 配套光盘(源码+资源)

    《精通Spring4.x+企业应用开发实战》这本书的配套光盘包含了丰富的源码和资源,旨在帮助读者深入理解和掌握Spring4.x框架在实际企业开发中的应用。Spring4.x是Java领域中最受欢迎的轻量级开源框架之一,它以其模块化...

    Spring 3.x企业应用开发实战.rar

    通过阅读《Spring 3.x企业应用开发实战》,读者将能够了解如何设置和配置Spring环境,创建bean定义,实现依赖注入,以及如何利用Spring MVC构建Web应用程序。此外,书中的案例将涵盖数据库操作、事务管理、安全控制...

    spring1.x使用AOP实例

    在IT行业中,Spring框架是...虽然现代版本的Spring提供了更丰富的功能和改进,但理解早期版本的基本原理仍然是掌握Spring框架的关键步骤。通过深入学习和实践,我们可以更好地利用AOP来提升代码的可读性和可维护性。

    spring-ldap-1.3.1.RELEASE-with-dependencies.zip

    2. `spring-context-support-3.x.y.jar`: 提供了对邮件、定时任务、缓存等的Spring支持,可能作为Spring LDAP的依赖。 3. `spring-beans-3.x.y.jar`, `spring-core-3.x.y.jar`, `spring-expression-3.x.y.jar`: ...

    官方原版源码spring-framework-4.3.25.RELEASE.zip

    其次,通过跟踪代码执行流程,了解Spring如何初始化、加载配置、创建和管理Bean。最后,结合实际项目,实践源码中的设计思想,加深理解。 6. **源码研究的价值** 研究Spring源码能帮助开发者提升对Java和软件设计...

    精通Spring2.x-企业应用开发详解

    《精通Spring2.x-企业应用开发详解》是一本深度解析Spring框架2.x版本的...通过分析这些源代码,读者不仅可以深入了解Spring2.x的核心机制,还能学习到如何在实际项目中应用这些技术,提升企业级应用的开发效率和质量。

    spring-framework-4.2.0.RELEASE官方完整包加官方文档

    首先,4.2.0.RELEASE是Spring框架的一个稳定版本,它在4.x系列中引入了多项改进和新特性。这些改进旨在提升性能,增强可扩展性,并提供更好的开发者体验。其中,对Java 8的支持是这个版本的重要更新之一,允许开发者...

    spring 5.0.x源码.zip

    在数据访问层,Spring Data项目在5.0.x版本中继续扩展对各种数据库和NoSQL存储的支持,提供了统一的CRUD操作接口,简化了数据访问的代码。Spring JDBC和JPA模块也得到了增强,比如JdbcTemplate和...

Global site tag (gtag.js) - Google Analytics