Spring Setter Injection and Constructor Injection
2024-10-10 03:46:31
Setter Injection
AppContext.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="messageRenderer"
class="com.apress.prospring4.ch3.xml.StandardOutMessageRenderer"
p:messageProvider-ref="messageProvider"/> <bean id="messageProvider"
class="com.apress.prospring4.ch3.xml.HelloWorldMessageProvider"/>
</beans>
Source Code
package com.apress.prospring4.ch3; public interface MessageRenderer {
void render();
void setMessageProvider(MessageProvider provider);
MessageProvider getMessageProvider();
}
package com.apress.prospring4.ch3; public interface MessageProvider {
String getMessage();
}
package com.apress.prospring4.ch3.xml; import com.apress.prospring4.ch3.MessageProvider; public class HelloWorldMessageProvider implements MessageProvider {
@Override
public String getMessage() {
return "Hello World!";
}
}
package com.apress.prospring4.ch3.xml; import com.apress.prospring4.ch3.MessageProvider;
import com.apress.prospring4.ch3.MessageRenderer; public class StandardOutMessageRenderer implements MessageRenderer {
private MessageProvider messageProvider; @Override
public void render() {
if (messageProvider == null) {
throw new RuntimeException(
"You must set the property messageProvider of class:"
+ StandardOutMessageRenderer.class.getName());
} System.out.println(messageProvider.getMessage());
} @Override
public void setMessageProvider(MessageProvider provider) {
this.messageProvider = provider;
} @Override
public MessageProvider getMessageProvider() {
return this.messageProvider;
}
}
package com.apress.prospring4.ch3; import org.springframework.context.support.GenericXmlApplicationContext; public class DeclareSpringComponents {
public static void main(String[] args) {
GenericXmlApplicationContext ctx = new GenericXmlApplicationContext();
ctx.load("classpath:META-INF/spring/app-context-xml.xml");
ctx.refresh(); MessageRenderer messageRenderer = ctx.getBean("messageRenderer",
MessageRenderer.class); messageRenderer.render();
}
}
Constructor Injection
AppContext.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:c="http://www.springframework.org/schema/c"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="messageProvider"
class="com.apress.prospring4.ch3.xml.ConfigurableMessageProvider"
c:message="This is a configurable message"/> <bean id="constructorConfusion"
class="com.apress.prospring4.ch3.xml.ConstructorConfusion">
<constructor-arg type="int">
<value>90</value>
</constructor-arg>
</bean>
</beans>
Source code
package com.apress.prospring4.ch3; public interface MessageProvider {
String getMessage();
}
package com.apress.prospring4.ch3.xml; import com.apress.prospring4.ch3.MessageProvider; public class ConfigurableMessageProvider implements MessageProvider {
private String message; public ConfigurableMessageProvider(String message) {
this.message = message;
} @Override
public String getMessage() {
return message;
}
}
package com.apress.prospring4.ch3.xml;
import com.apress.prospring4.ch3.MessageProvider; import org.springframework.context.support.GenericXmlApplicationContext; public class ConstructorConfusion {
private String someValue; public ConstructorConfusion(String someValue) {
System.out.println("ConstructorConfusion(String) called");
this.someValue = someValue;
} public ConstructorConfusion(int someValue) {
System.out.println("ConstructorConfusion(int) called");
this.someValue = "Number: " + Integer.toString(someValue);
} public static void main(String[] args) {
GenericXmlApplicationContext ctx = new GenericXmlApplicationContext();
ctx.load("classpath:META-INF/spring/app-context-xml.xml");
ctx.refresh(); ConstructorConfusion cc = (ConstructorConfusion) ctx.getBean("constructorConfusion");
System.out.println(cc); MessageProvider mp = (MessageProvider) ctx.getBean("messageProvider");
System.out.println(mp.getMessage()); } public String toString() {
return someValue;
}
}
最新文章
- sql group by+字段
- Add project to working sets
- csdn第八名
- ios卡牌游戏项目源码
- Linq常用
- Headfirst设计模式的C++实现——迭代器(Iterator)
- 对 Select 的各种操作(JQuery)
- Nimbus<;三>;Storm源码分析--Nimbus启动过程
- CSS line-height概念与举例
- Codeforces Round #305 (Div. 2) A. Mike and Fax 暴力回文串
- videojs播放直播源rtmp时画面在左上角解决方案
- 计数排序与桶排序python实现
- Spring生态研习【四】:Springboot+mybatis(探坑记)
- Android 學習之旅!(1)
- 腾讯云服务器 - 安装redis3.2.9以及集群
- sql server 2014 序列號
- 使用axios发送post请求,将JSON数据改为为form类型
- 无法解决 equal to 运算中 ";Chinese_PRC_CI_AS"; 和 ";Latin1_General_100_CI_AS"; 之间的排序规则冲突。
- OA项目CRUD和单元测试(一)
- 发布订阅者模式之C#委托实现
热门文章
- linux-11 基本命令之 -工作期目录切换命令-pwd,cd,
- ORACLE10g数据库字符集设置和客户端字符集设置不一致问题
- centos 6.5 中部署开源的Lepus(天兔)监控
- 开始VS 2012中LightSwitch系列的第5部分:我可以使用用户权限来控制访问权吗?
- [Asp.net 开发系列之SignalR篇]专题二:使用SignalR实现酷炫端对端聊天功能
- Java设计模式7:适配器模式
- C#可扩展编程之MEF学习笔记(四):见证奇迹的时刻
- Python中的几种数据类型
- java 锁3
- Oracle函数脚本记录