import java.io.FileInputStream;
import java.util.Properties;import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.beans.factory.support.PropertiesBeanDefinitionReader;public class HelloWorldWithSpringUsage { public static void main(String[] args) throws Exception { //取得Bean工厂
BeanFactory factory = getBeanFactory();
//从Bean工厂中分别取得MessageDisplayer和MessageSupplier实例
MessageDisplayer displayer =
(MessageDisplayer) factory.getBean("displayer");
MessageSupplier supplier =
(MessageSupplier) factory.getBean("supplier"); //手工注入MessageSupplier实例
displayer.setMessageSupplier(supplier);
//显示消息
displayer.display();
} private static BeanFactory getBeanFactory() throws Exception {
//创建一个BeanFactory的实例
//(DefaultListableBeanFactory实现了BeanFactory接口)
DefaultListableBeanFactory factory =new DefaultListableBeanFactory(); //创建一个用于读取Bean定义的阅读器,该阅读器专门用于
//读取定义在properties文件中的Bean定义
//该阅读器典型地就是和DefaultListableBeanFactory在一起工作
PropertiesBeanDefinitionReader rdr =
new PropertiesBeanDefinitionReader(factory); //读取属性文件
Properties props = new Properties();
props.load(new FileInputStream("msgbean.properties")); //向阅读器注册Bean的属性定义
rdr.registerBeanDefinitions(props); return factory;
}
}public interface MessageSupplier {
/**
* 取得消息
*/
String getMessage();
}public interface MessageDisplayer {
/**
* 消息提供者的getter/setter
*/
void setMessageSupplier(MessageSupplier supplier); MessageSupplier getMessageSupplier(); /**
* 显示消息
*/
void display();}public class HelloWorldMessageSupplier implements MessageSupplier { /*
* 固定的返回Hello World字串信息
*/
public String getMessage() {
return "Hello World";
}
}
public class ConcreteMessageDisplayer implements MessageDisplayer {
private MessageSupplier messageSupplier = null; public MessageSupplier getMessageSupplier() {
return messageSupplier;
} public void setMessageSupplier(MessageSupplier messageSupplier) {
this.messageSupplier = messageSupplier;
} public void display() {
//预期检查,如果javabean属性为空,则报错
if (messageSupplier == null) {
throw new RuntimeException(
"必须设定这个类的messageSupplier属性: "
+ ConcreteMessageDisplayer.class.getName()); }
//委托messageSupplier来显示消息内容
System.out.println(messageSupplier.getMessage());
}}配置文件msgbean.properties如下:
displayer.class=ConcreteMessageDisplayer
supplier.class=HelloWorldMessageSupplier
import java.util.Properties;import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.beans.factory.support.PropertiesBeanDefinitionReader;public class HelloWorldWithSpringUsage { public static void main(String[] args) throws Exception { //取得Bean工厂
BeanFactory factory = getBeanFactory();
//从Bean工厂中分别取得MessageDisplayer和MessageSupplier实例
MessageDisplayer displayer =
(MessageDisplayer) factory.getBean("displayer");
MessageSupplier supplier =
(MessageSupplier) factory.getBean("supplier"); //手工注入MessageSupplier实例
displayer.setMessageSupplier(supplier);
//显示消息
displayer.display();
} private static BeanFactory getBeanFactory() throws Exception {
//创建一个BeanFactory的实例
//(DefaultListableBeanFactory实现了BeanFactory接口)
DefaultListableBeanFactory factory =new DefaultListableBeanFactory(); //创建一个用于读取Bean定义的阅读器,该阅读器专门用于
//读取定义在properties文件中的Bean定义
//该阅读器典型地就是和DefaultListableBeanFactory在一起工作
PropertiesBeanDefinitionReader rdr =
new PropertiesBeanDefinitionReader(factory); //读取属性文件
Properties props = new Properties();
props.load(new FileInputStream("msgbean.properties")); //向阅读器注册Bean的属性定义
rdr.registerBeanDefinitions(props); return factory;
}
}public interface MessageSupplier {
/**
* 取得消息
*/
String getMessage();
}public interface MessageDisplayer {
/**
* 消息提供者的getter/setter
*/
void setMessageSupplier(MessageSupplier supplier); MessageSupplier getMessageSupplier(); /**
* 显示消息
*/
void display();}public class HelloWorldMessageSupplier implements MessageSupplier { /*
* 固定的返回Hello World字串信息
*/
public String getMessage() {
return "Hello World";
}
}
public class ConcreteMessageDisplayer implements MessageDisplayer {
private MessageSupplier messageSupplier = null; public MessageSupplier getMessageSupplier() {
return messageSupplier;
} public void setMessageSupplier(MessageSupplier messageSupplier) {
this.messageSupplier = messageSupplier;
} public void display() {
//预期检查,如果javabean属性为空,则报错
if (messageSupplier == null) {
throw new RuntimeException(
"必须设定这个类的messageSupplier属性: "
+ ConcreteMessageDisplayer.class.getName()); }
//委托messageSupplier来显示消息内容
System.out.println(messageSupplier.getMessage());
}}配置文件msgbean.properties如下:
displayer.class=ConcreteMessageDisplayer
supplier.class=HelloWorldMessageSupplier
解决方案 »
- 请教 关于socket的问题
- 新手没多少分给,还是希望高手能进来指导一下。
- [求助]为什么HttpServlet中的方法基本都是protected?
- 大家帮忙看看我写的JDBC连接SQLServer的测试函数,哪里有问题?谢谢!!!
- 为什么当我debug调试J2SE程序时,总是进入到J2SE的一些基础类库,自己类中的断点800年也进不去?
- 高分求救,怎样让JTable的cell获得焦点时文字处于全选的状态。
- 位移运算,朋友们进来看看
- 大家能否简单地告诉我Collections、Lists、Sets、Maps的区别吗?以及Vector、Hastalbe、Lists谢谢了!
- jdbc连接数据库SQLSERVER2000时,JNDI的问题?急,高手解答,万分感谢!
- 怎样读取c程序写入的文件?
- 编写java最常见的21种错误
- 关于java内存泄漏
有warning?把输出写出来呀.