`

Spring 备忘 (三)

 
阅读更多

Spring 学习笔记 (三)

 

19. 深入理解依赖关系配置

    (1) 注入其他bean的属性值

        配置片段:

        

        

<!-- 将其他bean的属性注入给当前正在定义bean的属性 -->
        <bean id="son1" class="Bean.superIOCparam.Son">  
            <property name="age">  
              <!--以下是访问bean属性的简单方式,这样可以将person这个 bean的son属性的age属性 赋值 给son1这个bean的age属性-->
              <!-- org.springframework.beans.factory.config.PropertyPathFactoryBean这个类是固定的 -->             
             <bean id="person.son.age" class="org.springframework.beans.factory.config.PropertyPathFactoryBean"/>  
            </property>  
        </bean>
        
        <!-- 将其他bean的属性定义成一个bean -->
        <!-- 以下将会获得结果son2,它将是person bean的son的数值--> 
        <!-- 定义son2这个bean,这个bean是来自名字为person这个bean的son属性 --> 
        <bean id="son2" class="org.springframework.beans.factory.config.PropertyPathFactoryBean">  
           <!-- targetBeanName表示需要从id为person的bean获取属性 -->
           <property name="targetBeanName" varlue="person" />
           <!-- propertyPath表示需要从id为person的bean获取属性,需要获取的属性为son -->  
           <property name="propertyPath" varlue="son" />  
        </bean>  
        
        <!-- 使用嵌套bean,定义一个bean,并将该bean的某个属性 定义成一个新bean(theAge2) -->
        <bean id="theAge2" class="org.springframework.beans.factory.config.PropertyPathFactoryBean">  
          <!-- targetObject 中设置一个bean,表示需要从这个bean获取属性 -->
          <property name="targetObject" >
            <bean class="xxx.xxx.Person">
              <property name="age" value="30" />
            </bean>
          </property>
          <!-- 定义需要获取的属性名称 -->
          <property name="propertyPath" value="age" />
        </bean>

 

       

    (2) 注入其他bean的Field值,使用FieldRetrievingFactoryBean

        配置片段:

        

        

<!-- 将指定的类的静态Field设置成bean的属性值 -->
        <bean id="son" class="...">
          <property name="age">
            <!-- id指定了哪个Field的值 将会被设置给id="son"的bean -->
            <bean id="java.sql.Connection.TRANSACTION_SERIALIZABLE" 
                  class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean">
          </property>
        </bean>
        
        <!-- 将其他bean的Field定义成一个bean -->
        <bean id="theAge1" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean">  
          <!-- targetClass 设置Field所在的类,targetObject,当目标对象时使用(代替targetClass) -->
          <property name="targetClass" value="java.sql.Connection" />
          <!-- targetField指定目标类的目标Field -->
          <property name="targetField" value="TRANSACTION_SERIALIZABLE" />
        </bean>
        
        <!-- 将静态Field定义成一个bean的简单写法 -->
        <bean id="theAge2" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean">  
          <property name="staticField" value="java.sql.Connection.TRANSACTION_SERIALIZABLE" />
        </bean>

 

    

    (3) 注入其他Bean的方法返回值 MethodInvokingFactoryBean. 获得的方法的返回值既可以注入到指定的Bean实例,

        也可以直接定义成Bean实例

        

        配置片段:

       

 <!-- 提供方法的bean -->
        <bean id="valueGenerator" class="xxx.xxx.valueGenerator" />
        <!-- 将一个bean的方法 返回值 注入 新bean的 age属性 -->
        <bean id="son1" class="xxx.xxx.son">
          <property name="age">
            <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
              <property name="targetObject" ref="valueGenerator" />
              <property name="targetMethod" value="getValue" />
            </bean>
          </property>  
        </bean>
        <!-- 上面 是调用非静态类对象的getValue()这种无参方法 -->
        
        <!-- 调用静态类的静态方法,静态方法的返回值直接 定义成bean -->
        <bean id="sysProps" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
          <property name="targetClass" value="java.lang.System" />
          <property name="targetMethod" value="getProperties" />
        </bean>
        <!-- 调用无参 静态类的静态方法 创建bean name="staticMethod",value=静态类.静态方法-->
        <bean id="myBean" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
          <property name="staticMethod" value="xxx.MyStaticClass.myStaticMethod" />
        </bean>
        
        <!-- 有参数的方法调用,返回值 配置成一个bean -->
        <bean id="javaVersion" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
          <!-- 目标bean,确定调用哪个bean的方法 -->
          <property name="targetObject" ref="sysProps" />
          <!-- 确定目标方法,确定调用bean的哪个方法 -->
          <property name="targetMethod" value="getProperty" />
          <!-- 确定调用目标方法的参数 相当于调用getProperty方法,传递参数"java.version" -->
          <property name="arguments">
            <list>
              <value>java.version</value>
            </list>
          </property>   
        </bean>

 

 

 

分享到:
评论

相关推荐

    Spring 备忘 (一)

    这个备忘系列将探讨 Spring 的主要组成部分和使用方法。 **IoC 容器** IoC 是 Spring 的核心概念,它通过反转对象创建和管理的控制权,使得开发者不再手动实例化对象,而是由框架负责对象的生命周期。Spring 提供...

    struts+spring+hibernate3+webligic812环境配置备忘录

    以下是基于标题“struts+spring+hibernate3+webligic812环境配置备忘录”的详细知识点解析: ### 一、环境搭建与配置 #### 1. WebLogic Server安装与配置 - **安装过程**:首先,下载WebLogic Server 8.1.2版本的...

    Spring 3.1配置文件示例(备忘)

    这篇备忘录将深入探讨 `applicationContext.xml` 文件在 Spring 3.1 中的角色、结构和常见配置元素。我们将讨论如何通过 XML 配置来管理 Bean、属性注入、AOP(面向切面编程)、事务管理和资源加载。 首先,`...

    基于SpringBoot+Vue的备忘录系统源码+sql数据库(课程大作业).zip

    基于SpringBoot+Vue的备忘录系统源码+sql数据库(课程大作业).zip 基于SpringBoot+Vue的备忘录系统源码+sql数据库(课程大作业).zip 基于SpringBoot+Vue的备忘录系统源码+sql数据库(课程大作业).zip 【资源说明】 项目...

    SSHF备忘之依赖包(struts2+spring2.5+hibernate+freemarker)

    然而,配置和管理这些框架所需的依赖包往往是一项挑战,因为它们依赖于众多的第三方库。以下是对标题和描述中提到的关键知识点的详细说明: 1. **Struts2**:Struts2是基于Apache Jakarta Struts的下一代Web应用...

    移动平台多媒体备忘录

    【移动平台多媒体备忘录】是一个专为手机用户设计的应用程序,它允许用户在移动设备上创建、存储和管理多媒体内容的备忘录。这款应用不仅涵盖了文本记录,还支持图片、音频和视频等多媒体形式,极大地丰富了备忘录的...

    Spring_Batch系列文章汇总

    Spring_Batch框架主要包含三个层次结构:应用层、核心层和基础架构层。应用层负责所有批处理作业的实现,核心层则包含了作业的启动和控制所需的类,如JobLauncher、Job和Step等,而基础架构层提供了统一的读写接口和...

    Spring2.5.3+Struts2.0.11.1+Hibernate3.2.6整合备忘 (转载)

    Spring2.5.3+Struts2.0.11.1+Hibernate3.2.6整合备忘 (转载)

    s2sh框架实例——个人备忘录系统源码

    S2SH是Struts2、Spring和Hibernate三个开源框架的组合,是Java领域广泛应用的MVC(Model-View-Controller)架构模式的实现。这个实例将帮助我们深入了解这三个框架如何协同工作以构建高效、可维护的Web应用程序。 ...

    备忘录模块

    在IT行业中,备忘录模块通常是指一个软件或应用程序中的功能部分,用于帮助用户记录、存储和管理重要的信息和待办事项。这个模块是许多个人和企业日常工作中不可或缺的工具,尤其是在java web环境下,它能够无缝集成...

    myfaces+ajax4jsf+spring+jpa+chartCreate 配置备忘.part1

    myfaces+ajax4jsf+spring+jpa+chartCreate 配置备忘 完整eclipse项目源代码

    Android大作业,基于bomb的云备忘录项目源码.zip

    3. **SSM框架**: SSM是Java Web开发常用的三层架构,包括Spring Framework(负责依赖注入和AOP)、SpringMVC(处理HTTP请求和响应,实现MVC设计模式)和MyBatis(一个轻量级的持久层框架,用于SQL映射和对象关系映射...

    java开发备忘录

    - **Spring框架**:依赖注入、AOP、事务管理等,简化企业级应用开发。 - **JDBC**:Java Database Connectivity,用于连接和操作数据库。 9. **Java SE新特性** - **Lambda表达式**:简化函数式编程,从Java 8...

    10备忘录系统(ssm+mysql)

    基于SSM(Spring+SpringMVC+MyBatis)框架和MySQL数据库的备忘录系统,其功能设计通常围绕着用户的日常备忘需求展开,旨在提供一个高效、便捷的信息记录和检索平台。以下是对该系统功能的详细描述: 1. 用户管理 ...

    java ssm备忘录管理系统毕业论文.docx

    该框架包括三个主要组件:Spring、Struts2 和 Hibernate。Spring 提供了一个轻量级的IoC 容器,用于管理应用程序的组件;Struts2 提供了一个基于 MVC 模式的Web 应用框架,用于处理用户请求;Hibernate 提供了一个...

    beiwanglu.rar_备忘录代码

    【标题】"备忘录代码"指的是一个编程项目,它实现了备忘录功能。备忘录应用程序是常见的软件工具,允许用户记录、存储和管理日常生活中的待办事项、提醒和其他重要信息。在这个“beiwanglu.rar”压缩包中,包含的...

    大学 毕业设计 项目实训 个人备忘录系统(java SSH网站源代码)+JSP漂亮的界面控件.zip

    SSH是Struts2、Spring和Hibernate三个开源框架的简称,它们常被组合使用来构建Web应用程序。 【描述】中的内容与标题基本一致,进一步强调这是一个包含Java SSH框架的网站源代码,以及JSP页面中使用的美观界面控件...

    code-memo:代码备忘录, 包含mybatis、spring、spring-boot、hbase、hive、guava、jdk等示例代码

    包括mybatis、spring、spring-boot、hbase、hive、impala、guava、jdk等 包含的模块 spring-demo mybatis-demo spring-mybatis-jetty springboot-demo opensource-utils spring-demo spring依赖注入相关demo,包括...

Global site tag (gtag.js) - Google Analytics