Spring属性装配之属性类型是另外一个被装载的类

简介:

如果属性类型是另外一个被装载的类,可以使用标签来装配属性值。

比如一个JavaBean中的某个属性是另外一个JavaBean的对象,而且要装备这个属性,那么就需要使用来标签ref进行装配。

MyBean类的hello属性是HelloService的类型,代码如下:

 

MyBean.java


[c-sharp] view plain copy print ?
  1. package chapter22;  
  2.   
  3. public class MyBean {  
  4.     private int iValue;  
  5.     private String strName;  
  6.     private HelloService hello;  
  7.   
  8.     public int getiValue() {  
  9.         return iValue;  
  10.     }  
  11.   
  12.     public void setiValue(int iValue) {  
  13.         this.iValue = iValue;  
  14.     }  
  15.   
  16.     public String getStrName() {  
  17.         System.out.println("getStrName()方法被调用");  
  18.         return strName;  
  19.     }  
  20.   
  21.     public void setStrName(String strName) {  
  22.         this.strName = strName;  
  23.         System.out.println("setStrName()方法被调用");  
  24.     }  
  25.   
  26.     public HelloService getHello() {  
  27.         System.out.println("getHello()方法被调用");  
  28.         return hello;  
  29.     }  
  30.   
  31.     public void setHello(HelloService hello) {  
  32.         this.hello = hello;  
  33.         System.out.println("setHello()方法被调用");  
  34.     }  
  35. }  

然后在applicationContext.xml中进行配置,配置如下:


[c-sharp] view plain copy print ?
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"  
  4.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">  
  5.     <bean id="helloservice" class="chapter22.HelloServiceImpl">  
  6.         <property name="greeting" value="greeting Xu Wei">  
  7.         </property>  
  8.     </bean>  
  9.     <bean id="myBean" class="chapter22.MyBean">  
  10.         <property name="hello">  
  11.             <ref bean="helloservice" />  
  12.         </property>  
  13.         <property name="strName" value="Xu Wei"></property>  
  14.     </bean>  
  15. </beans>  

添加一个TestMyBean类,代码如下

 

TestMyBean.java


[c-sharp] view plain copy print ?
  1. package chapter22;  
  2.   
  3. import org.springframework.context.ApplicationContext;  
  4. import org.springframework.context.support.FileSystemXmlApplicationContext;  
  5.   
  6. public class TestMyBean {  
  7.     public static void main(String args[]) {  
  8.         ApplicationContext ctx = new FileSystemXmlApplicationContext(  
  9.                 "src//applicationContext.xml");  
  10.         MyBean mb = (MyBean) ctx.getBean("myBean");  
  11.         // System.out.println(mb.getHello());  
  12.         System.out.println(mb.getHello().getGreeting());  
  13.         System.out.println(mb.getStrName());  
  14.     }  
  15. }  

最后的输出结果如下:

log4j:WARN No appenders could be found for logger (org.springframework.context.support.FileSystemXmlApplicationContext).
log4j:WARN Please initialize the log4j system properly.
setGreeting()方法被调用
setHello()方法被调用
setStrName()方法被调用
getHello()方法被调用
getGreeting()方法被调用
greeting Xu Wei
getStrName()方法被调用
Xu Wei
分析:

mb.getStrName是直接传参进去的,而这里通过ref穿进去的是hello,hello本身是一个对象,所以mb.getHello().getGreeting()获得的是hello配置的参数。








本文转自xwdreamer博客园博客,原文链接:http://www.cnblogs.com/xwdreamer/archive/2010/09/12/2297094.html,如需转载请自行联系原作者

目录
相关文章
|
9月前
|
Java 测试技术 微服务
微服务——SpringBoot使用归纳——Spring Boot中的项目属性配置——少量配置信息的情形
本课主要讲解Spring Boot项目中的属性配置方法。在实际开发中,测试与生产环境的配置往往不同,因此不应将配置信息硬编码在代码中,而应使用配置文件管理,如`application.yml`。例如,在微服务架构下,可通过配置文件设置调用其他服务的地址(如订单服务端口8002),并利用`@Value`注解在代码中读取这些配置值。这种方式使项目更灵活,便于后续修改和维护。
178 0
|
Java Spring
【Spring】方法注解@Bean,配置类扫描路径
@Bean方法注解,如何在同一个类下面定义多个Bean对象,配置扫描路径
584 73
|
10月前
|
XML Java 测试技术
Spring AOP—通知类型 和 切入点表达式 万字详解(通俗易懂)
Spring 第五节 AOP——切入点表达式 万字详解!
799 25
|
8月前
|
前端开发 IDE Java
Spring MVC 中因导入错误的 Model 类报错问题解析
在 Spring MVC 或 Spring Boot 开发中,若导入错误的 `Model` 类(如 `ch.qos.logback.core.model.Model`),会导致无法解析 `addAttribute` 方法的错误。正确类应为 `org.springframework.ui.Model`。此问题通常因 IDE 自动导入错误类引起。解决方法包括:删除错误导入、添加正确包路径、验证依赖及清理缓存。确保代码中正确使用 Spring 提供的 `Model` 接口以实现前后端数据传递。
286 0
|
9月前
|
Java 数据库 微服务
微服务——SpringBoot使用归纳——Spring Boot中的项目属性配置——指定项目配置文件
在实际项目中,开发环境和生产环境的配置往往不同。为简化配置切换,可通过创建 `application-dev.yml` 和 `application-pro.yml` 分别管理开发与生产环境配置,如设置不同端口(8001/8002)。在 `application.yml` 中使用 `spring.profiles.active` 指定加载的配置文件,实现环境快速切换。本节还介绍了通过配置类读取参数的方法,适用于微服务场景,提升代码可维护性。课程源码可从 [Gitee](https://gitee.com/eson15/springboot_study) 下载。
397 0
|
9月前
|
Java 微服务 Spring
微服务——SpringBoot使用归纳——Spring Boot中的项目属性配置——少量配置信息的情形
在微服务架构中,随着业务复杂度增加,项目可能需要调用多个微服务。为避免使用`@Value`注解逐一引入配置的繁琐,可通过定义配置类(如`MicroServiceUrl`)并结合`@ConfigurationProperties`注解实现批量管理。此方法需在配置文件中设置微服务地址(如订单、用户、购物车服务),并通过`@Component`将配置类纳入Spring容器。最后,在Controller中通过`@Resource`注入配置类即可便捷使用,提升代码可维护性。
199 0
|
Java Spring
【Spring配置相关】启动类为Current File,如何更改
问题场景:当我们切换类的界面的时候,重新启动的按钮是灰色的,不能使用,并且只有一个Current File 项目,下面介绍两种方法来解决这个问题。
265 10
|
Java 开发者 Spring
Spring高手之路24——事务类型及传播行为实战指南
本篇文章深入探讨了Spring中的事务管理,特别是事务传播行为(如REQUIRES_NEW和NESTED)的应用与区别。通过详实的示例和优化的时序图,全面解析如何在实际项目中使用这些高级事务控制技巧,以提升开发者的Spring事务管理能力。
342 1
Spring高手之路24——事务类型及传播行为实战指南
|
消息中间件 Java 数据库
解密Spring Boot:深入理解条件装配与条件注解
Spring Boot中的条件装配与条件注解提供了强大的工具,使得应用程序可以根据不同的条件动态装配Bean,从而实现灵活的配置和管理。通过合理使用这些条件注解,开发者可以根据实际需求动态调整应用的行为,提升代码的可维护性和可扩展性。希望本文能够帮助你深入理解Spring Boot中的条件装配与条件注解,在实际开发中更好地应用这些功能。
309 2
|
缓存 Java 开发者
Spring高手之路22——AOP切面类的封装与解析
本篇文章深入解析了Spring AOP的工作机制,包括Advisor和TargetSource的构建与作用。通过详尽的源码分析和实际案例,帮助开发者全面理解AOP的核心技术,提升在实际项目中的应用能力。
354 0
Spring高手之路22——AOP切面类的封装与解析