1.项目结构
代码编写:
//账户的持久层接口
public interface AccountDao {
public void saveAccount();
}
//账户的持久层实现类
public class AccountDaoImpl implements AccountDao {
@Override
public void saveAccount() {
System.out.println("你好啊!");
}
}
//账户业务接口
@WebService
public interface IAccountService {
//模拟保存账户
public void saveAccount();
}
//业务层实现类
public class IAccountServiceImpl implements IAccountService {
private AccountDao accountDao = (AccountDao) BeanFactory.getBean("accountDao");
public IAccountServiceImpl() throws ClassNotFoundException, InstantiationException, IllegalAccessException {
}
@Override
public void saveAccount() {
accountDao.saveAccount();
}
}
精华部分之Bean工厂:
//创建一个Bean对象的工厂
//Bean:在计算机中,有可重用组件的含义。
//javabean : 用java语言编写的可重用组件
//javabean > 实体类
//它就是创建我们的Service和dao对象的。
//第一个: 需要一个配置文件来配置我们的Service和dao
// 配置的配置:唯一标识=全限定类名(key=value)
//第二个:通过读取配置文件中配置的内容,反射创建对象
public class BeanFactory {
private static Map<String, Object> beans;
private static Properties properties;
//static代码块在启动时只会执行一次,这样所获取的Bean也不会重复去生产新的,至始至终只有一个Bean在活跃-------->单例对象
static {
try {
//实例化对象
properties = new Properties();
//获取properties文件的流对象
InputStream in = BeanFactory.class.getClassLoader().getResourceAsStream("bean.properties");
//读取文件流
properties.load(in);
//实例化容器
beans = new HashMap<String, Object>();
//取出配置文件中的所有的key
Enumeration keys = properties.keys();
while (keys.hasMoreElements()) {
//取出每个key
String key = keys.nextElement().toString();
//根据key取出value
String beanPath = properties.getProperty(key);
Object values = Class.forName(beanPath).newInstance();
//把key和values存入容器之中
beans.put(key, values);
}
} catch (Exception e) {
throw new ExceptionInInitializerError("初始化properties失败");
}
}
//根据Bean名称获取bean对象
public static Object getBean(String beanName) {
return beans.get(beanName);
}
}
main启动:
//模拟一个表现层调用业务层,
public class Client {
public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
IAccountServiceImpl iAccountService = (IAccountServiceImpl) BeanFactory.getBean("accountService");
iAccountService.saveAccount();
}
}
bean.properties:
accountService=com.demo.service.impl.IAccountServiceImpl
accountDao=com.demo.dao.impl.AccountDaoImpl
结果:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/105095.html