Code:
public abstract class Instrumentalist implements Performer {
public Instrumentalist() {}
public void perform() throws PerformanceException {
System.out.print("Playing " + song + " : ");
getInstrument().play();
}
private String song;
public void setSong(String song) {
this.song = song;
}
public abstract Instrument getInstrument();
}
XML:
<bean id="stevie" class="com.springinaction.springidol.Instrumentalist">
<lookup-method name="getInstrument" bean="guitar" />
<property name="song" value="Greensleeves" />
</bean>
<bean id="guitar" class="com.springinaction.springidol.Guitar"
scope="prototype" />
Notice: Bean "guitar" must be prototype otherwise always same instance will be returned
As with <replaced-method>, the name attribute of <lookup-method> indicates the method that is to be replaced. Here we’re replacing the getInstrument() method. The bean attribute refers to a bean that should be returned when getInstrument() is called. In this case, we’re wiring in the bean whose id is guitar. As a result, the getInstrument() method is effectively overridden as follows:
public Instrument getInstrument() {
ApplicationContext ctx = …;
return (Instrument) ctx.getBean("guitar");
}
On its own, getter injection is just a reversal of setter injection. However, it makes a difference when the referenced bean is prototype scoped:Even though it’s prototype scoped, the guitar method would only be injected once into a property if we were using setter injection. By injecting it into the get-
Instrument() method through getter injection, however, we ensure that every call to getInstrument() will return a different guitar. This can come in handy if a guitarist breaks a string in the middle of a performance and needs a freshly stringed instrument.
You should be aware that although we used <lookup-method> to perform getter injection on the getInstrument() method, there’s nothing about <lookupmethod> that requires that the replaced method actually be a getter method (i.e., one whose name starts with get). Any non-void method is a candidate for replacement with <lookup-method>.
It’s important to note that while method injection allows you to change a method’s implementation, it’s not capable of replacing a method’s signature. The parameters and return type must
分享到:
相关推荐
这可用于包装函数,以便在运行时可以主动检索函数的一个或某些参数(使用给定的 getter)。 例如,假设您有一个函数可以执行某些操作,并且需要一些参数。 var request = require ( 'request' ) ;var Promise = ...
7. **XML配置和依赖注入**:在Spring框架中,JavaBean可以通过XML配置文件进行声明和管理,实现依赖注入(Dependency Injection),这有助于解耦组件,提高代码的灵活性和可测试性。 8. **JSP标签库**:在JSP页面中...
在Spring框架中,JavaBean(称为`@Component`、`@Service`、`@Repository`等注解的类)与依赖注入(Dependency Injection, DI)结合,提供了更强大和灵活的数据管理方式。此外,Spring Boot的崛起让开发更加简化,...
1. **依赖注入(Dependency Injection, DI)**:Spring的核心特性之一,它允许开发者在运行时通过配置文件或注解来控制对象间的依赖关系,而不是在代码中硬编码这些依赖。这样提高了代码的灵活性和可测试性。 2. **...
- **Bean Wrapper**: 提供了一种包装Java Bean的方法,使得Bean可以通过标准的getter和setter方法被访问和修改。 - **Bean Factory**: 是Spring中最基本的容器,负责Bean的实例化、装配和管理。它是工厂模式的应用...
依赖注入(Dependency Injection,简称 DI)是一种软件设计模式,允许组件之间松散耦合。Spring 框架提供了多种方式来实现 DI,包括接口注入、上下文注入、Setter 方法注入和构造方法注入。 A. 接口注入:通过接口...
例如,在Spring中,JavaBean可以作为bean定义在配置文件中,通过依赖注入(DI,Dependency Injection)进行管理。 8. **异常处理**: 处理留言数据时,可能出现如数据验证错误、数据库操作异常等问题。JavaBean...
9. 依赖注入实现方式:依赖注入包括接口注入(Interface Injection)、setter注入(Setter Injection)和构造器注入(Constructor Injection),而函数注入(Function Injection)不是常见的DI方式。 10. Java设计...
Java 框架 Spring2 复习题 一、选择题解析 1. 关于 AOP 的说法错误的是( )。 正确答案:C.AOP 已经表现出了将要...* 依赖注入(Dependency Injection):是 Spring 框架的一种设计模式,实现对象之间的松耦合。
9. **依赖注入(Dependency Injection)**: `setDepts(Department a)` 方法是依赖注入的一个例子,允许在运行时将 `Department` 对象传递给 `Employee` 对象,而不是在 `Employee` 构造函数中硬编码。 通过这些类...
答案是使用IoC(反转控制,Inversion of Control),也叫“依赖注入(Dependency Injection)”的模式(想更多地了解这方面信息请看Martin Fowler的文章http://www.martinfowler.com/articles/injection.html)。...
例如,@Getter和@Setter注解可以自动生成getter和setter方法,@NoArgsConstructor和@AllArgsConstructor则生成构造函数。本项目中使用Lombok可以减少样板代码,提高代码的可读性和简洁性。 5. **Knife4j**:Knife4j...
3. **依赖注入(Dependency Injection, DI)** 依赖注入是 Spring 框架的核心特性之一,它允许在代码之外管理对象之间的依赖关系,提高了代码的可测试性和可维护性。setter 注入和构造注入是 Spring 实现依赖注入的...
Adding Setter and Getter Methods 312 Using a Managed Bean in a Facelets Page 313 Injecting Objects by Using Producer Methods 314 Configuring a CDI Application 315 Further Information about CDI 315...
2. **创建Person类**:该类包含了姓名和年龄两个属性,并提供了对应的getter和setter方法以及一个用于展示个人信息的方法`info()`。通过`setName()`和`setAge()`方法实现了设值注入。 3. **配置applicationContext....
在Spring框架中,依赖注入(Dependency Injection,简称DI)是一种重要的设计模式,它使得对象之间的耦合度降低,提高了代码的可测试性和可维护性。本篇将详细讲解setter注入和构造注入这两种常见的DI方式,并结合...
首先,我们看到一个简单的Java类`Book`,它代表数据库中的书籍实体,包含id、title和price三个属性,以及对应的getter和setter方法。 接下来是`bookDao`类,它是数据访问对象(DAO)的实现,负责处理与数据库的交互...
Spring 框架是 Java 开发中非常重要的一个组件,它提供了一种强大的依赖注入(Dependency Injection,简称 DI)机制,使得对象之间的依赖关系可以通过配置文件或者注解来管理,而不是硬编码在类的内部。这有助于提高...
源代码中可能有定义了属性、getter/setter方法的JavaBean类,它们作为数据模型在应用中传递。 5. **MVC(Model-View-Controller)模式**:这是一种常见的软件设计模式,用于分离业务逻辑、视图和控制逻辑。在Java ...
7. **依赖注入**:在现代Java开发中,Bean经常与依赖注入(Dependency Injection, DI)框架一起使用,如Spring。DI允许外部组件向Bean注入它们需要的服务,而不是Bean自己去查找和管理依赖,这有助于提高代码的可...