Ioc /DI即用于减少程序之间的耦合性
1、JavaBean(用java编写的可重用组件)》实体类:
第一步:编写配置文件bean.properties
需要一个配置文件来配置我们的service 和 dao
注意路径必须是全限定类名(包名+类名)
Dao=dao.impl.DaoImpl
Service=service.ServiceImpl
第二步:编写BeanFactory类
通过读取配置文件中配置(properties/xml文件)的内容,反射创建对象
package factory;
import java.io.InputStream;
import java.util.Properties;
public class BeanFactory {
private static Properties properties;
/**
* 通过静态方法在类被加载的时候就加载配置文件
* 注意事项:通过BeanFactory的类加载器加载配置文件流(找到bean.properties)
*/
static {
try{
// 实例化文件
properties = new Properties();
/*获取properties流对象 通过BeanFactory的类加载器加载配置文件流*/
InputStream is = BeanFactory.class.getClassLoader().getResourceAsStream("bean.properties");
properties.load(is);
}catch (Exception e){
throw new ExceptionInInitializerError("初始化失败BeanFactory");
}
}
/**
* 生成Bean的静态方法
* @param beanName 从配置文件读取的键--》从而获取需要实例化的类的全限定类名
* @return 返回实例化之后的Bean
*
*/
public static Object getBean(String beanName){
Object bean = null;
try{
String beanPath = properties.getProperty(beanName);
bean = Class.forName(beanPath).newInstance();
}catch (Exception e){
e.printStackTrace();
}
return bean;
}
}
第三步:编写测试类
/*通过BeanFactory内部反射实例化类,实现低耦合的编程思路**/
Service service = (Service) BeanFactory.getBean("Service");