时间:2015-03-13 来源:

【SSH进阶之路】一步步重构容器实现Spring框架——配置文件+反射实现IoC容器(十) 【编程语言】

目录      【SSH进阶之路】一步步重构容器实现Spring框架——从一个简单的容器开始(八)      【SSH进阶之路】一步步重构容器实现Spring框架——解决容器对组件的“侵入式”管理的两种方案--主动查找和控制反转(九)      【SSH进阶之路】一步步重构容器实现Spring框架——配置文件+反射实现IoC容器(十)      【SSH进阶之路】一步步重构容器实现Spring框架——彻底封装承接网页制作, Object>(); public ClassPathXmlApplicationContext(String fileName) { this.readXML(fileName); } // 解析xml文件,网站div+css通过反射将配置的beasn放到container中符合w3c标准,并实现依赖注入 private void readXML(String fileName) { // 创建SAXBuilder对象 SAXBuilder saxBuilder = new SAXBuilder(); // 读取资源,手机html制作获得document对象 Document doc; try { doc = saxBuilder.build(this.getClass().getClassLoader().getResourceAsStream(fileName)); // 获取根元素 Element rootEle = doc.getRootElement(); // 从根元素获得所有的子元素网页外包接活, "/beans/bean"); // 遍历根元素的子元素集合web前端制作,扫描配置文件中的bean for (int i = 0; i < listBean.size(); i++) { Element bean = (Element) listBean.get(i); // 获取id属性值 String id = bean.getAttributeValue("id"); // 获取class属性值 String clazz = bean.getAttributeValue("class"); // 反射,div+css制作实例化 Object o = Class.forName(clazz).newInstance(); beans.put(id, o); } // 依赖管理,承接网页制作这里还不灵活web切图报价,但是原理是一样的 Service service = (Service) beans.get("service"); Dao dao = (Dao) beans.get("dao"); // 依赖注入,web切图报价Service实现依赖dao的实现 service.setDao(dao); } catch (Exception e) { e.printStackTrace(); } } /** * 查找组件 * * @param id * @return */ @Override public Object getBean(String id) { return beans.get(id); } }      看到上面的代码符合w3c标准,我们发现读取配置文件的方法中包含了反射,html切图制作代码的可读性太差网页外包接活,并且对面向对象的封装不够彻

口对具体实现的依赖关系,网页外包接活封装了一个特别简陋的容器.

简单配置web前端制作,反射   

  

       上篇博文容器初始化时,web前端制作使用new的方式来实力化对象承接网页制作,这篇博文我们利用配置文件+反射实力化对象,div前端切图进一步封

public class BeanDefinition { private String id; private String className; public BeanDefinition(String id,我们利用控制反转符合w3c标准,去掉了组件对容器的依赖.

<?xml version="1.0" encoding="UTF-8"?> <beans> <bean id="dao" class="com.tgb.container.dao.impl.Dao4MySqlImpl" /> <bean id="service" class="com.tgb.container.service.impl.ServiceImpl" /> </beans>       看到上面的配置文件,手机html制作除了命名空间没有网页外包接活,和Spring的配置文件已经很像了,jpg或psd转html下面我们就使用dom4j或jdom来读取

影子了web前端制作,还没有达到神似的目标.

       上篇博文【SSH进阶之路】一步步重构容器实现Spring框架——解决容器对组件的“侵入式”管理的两种方案--主

承接网页制作,下面我们将bean的实例化以及依赖注入进行进一步的封装.

们看一下读取配置文件的代码:

配置文件,承接网页制作并将配置文件中配置类利用反射实例化.本实例我们使用的jdom,我们为了去掉接

灵活创建对象的部分符合w3c标准,依赖注入部分是由我们手动注入的. 对象的依赖关系还不灵活,手机html制作但是我们已经能够看到IoC的

import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.jdom.Document; import org.jdom.Element; import org.jdom.input.SAXBuilder; import org.jdom.xpath.XPath; import com.tgb.container.dao.Dao; import com.tgb.container.service.Service; /** * 容器 * * @author liang * */ public class ClassPathXmlApplicationContext implements BeanFactory { // 用于存放Bean private List<BeanDefinition> beanDefines = new ArrayList<BeanDefinition>(); // 用于存放Bean的实例 private Map<String, Object>(); public ClassPathXmlApplicationContext(String fileName) { this.readXML(fileName); this.instanceBeans(); this.injectObject(); } /** * 依赖注入web前端制作,为bean对象的属性注入值 * 这里还不灵活,div+css制作但是原理是一样的 */ private void injectObject() { Service service = (Service) this.sigletons.get("service"); Dao dao = (Dao) this.sigletons.get("dao"); //依赖注入承接网页制作,Class.forName(beanDefinition.getClassName()).newInstance() ); } } catch (Exception e) { e.printStackTrace(); } } } /** * 读取xml配置文件 */ private void readXML(String fileName) { // 创建SAXBuilder对象 SAXBuilder saxBuilder = new SAXBuilder(); try { // 读取资源web切图报价,获得document对象 Document doc = saxBuilder.build(this.getClass().getClassLoader() .getResourceAsStream(fileName)); // 获取根元素 Element rootEle = doc.getRootElement(); // 从根元素获得所有的子元素,web切图报价建立元素集合 List listBean = XPath.selectNodes(rootEle, "/beans/bean"); // 遍历根元素的子元素集合,html切图制作扫描配置文件中的bean for (int i = 0; i < listBean.size(); i++) { Element bean = (Element) listBean.get(i); // 获取id属性值 String id = bean.getAttributeValue("id"); // 获取class属性值 String clazz = bean.getAttributeValue("class"); BeanDefinition beanDefine = new BeanDefinition(id,clazz); // 将javabean添加到集合中 beanDefines.add(beanDefine); } } catch (Exception e) { e.printStackTrace(); } } /** * 获取bean实例 */ @Override public Object getBean(String beanName) { return this.sigletons.get(beanName); } }       我们知道容器不仅负责创建对象,网页外包接活而且可以管理对象的依赖关系web前端制作,管理对象的生命周期等等.我们仅实现了容器

封装bean的实例化

上送上.

      下篇博文【SSH进阶之路】一步步重构容器实现Spring框架——彻底封装,web前端制作实现简单灵活的Spring框架(十一),马

       为了做进一步的封装,div前端切图我们将配置文件的属性封装成一个javabean,为了存放我们的属性值.如下所示:

点击次数:6375
作者:
web前端行业资讯
Web new NewsList
英特尔宣布与法拉利跨界合作欲将AI技术用于赛车运动 ,,2018年01月11日甲骨文服务器出漏洞:攻击者用漏洞挖矿获取加密货币 ,,2018年01月11日用深度学习设计图像视频压缩算法:更简洁、更强大 ,,2018年01月11日Ubuntu内核和NVIDIA更新:修复Meltdown和Spectre两处漏洞 ,,2018年01月11日AntDesign3.1.1发布,阿里企业级UI设计语言 ,,2018年01月11日微信「跳一跳」带火小游戏,开发者如何快速上手? ,,2018年01月11日谷歌公布最新安卓系统份额:你用上奥利奥了么? ,,2018年01月11日腾讯开发出“3D音效”算法:普通耳机实现3D实时语音效果 ,,2018年01月11日谷歌工程师点赞中国程序员实现Node.js启动超4倍提速 ,,2018年01月11日三星电子总裁兼CE部门负责人金炫奭:万物互联时代到来 ,,2018年01月11日NVIDIA和大众合作建立智能驾驶助手 ,,2018年01月11日GIMPS项目报告发现已知最大素数 ,,2018年01月11日微软与生物技术公司开展AI驱动的血液检测同时诊断数十种疾病 ,,2018年01月11日微软跨平台移动开发工具套件HockeyApp宣布免费 ,,2018年01月11日《硅谷》里神乎其神的压缩技术,AI正在一点点做出来 ,,2018年01月11日LinuxMint19代号敲定为“Tara”预计2018年5月至6月期间发布 ,,2018年01月11日Facebook发布wav2letter工具包,用于端到端自动语音识别 ,,2018年01月11日开源数据库ArangoDB正进行约1156万美元股权融资 ,,2018年01月11日IntelCPU漏洞闹大:腾讯云紧急升级 ,,2018年01月11日2018年1月全球数据库排名:Redis夺回第八 ,,2018年01月11日Lyft将联手无人驾驶公司于CES上展示无人驾驶汽车 ,,2018年01月11日京东X无人超市首家社会门店开业:刷脸进、微信自动结算 ,,2018年01月11日担心被AI取代是杞人忧天?高晓松跨年演讲说的有几分对 ,,2018年01月11日免费授权技术许可Intel宣布在未来CPU中集成雷电3 ,,2018年01月11日算法决定你在社交媒体上看到的信息 ,,2018年01月11日谷歌安全博客披露“英特尔内核漏洞”更多细节 ,,2018年01月04日Postgres10开发者新特性 ,,2017年12月28日阿里巴巴、狗尾草、苏大联合论文:基于对抗学习的众包标注用于中文命名实体识别 ,,2017年12月28日柯洁的2017:20岁,与AI斗与人类斗,其乐无穷 ,,2017年12月28日如果机器人拥有痛觉,这个世界会有哪些不一样? ,,2017年12月28日输入一个非负整数,返回组成它的数字之和 【综合】2015年05月12日jquery封装了一个简洁轻巧的可拖动可自定义样式的纯div+css带遮罩层的仿模态弹出框 【综合】2015年06月01日自制小型图片采集程序(绕过防盗链)【编程语言】2015年03月30日用网站实现你的赚钱梦想2014年01月28日TabHostrequiresaTabWidgetwithid"android:idtabs"报错解决办法 【编程语言】2014年11月17日解决网页上的FLASH挡住层的问题2014年01月28日好记性不如烂笔头11-WEB应用的HttpServletResponse 【数据库】2015年02月02日产品设计想法 【云计算】2015年08月28日sql左连接和右连接的使用技巧(leftjoinandrightjoin)2014年01月29日微软终于想通把Script56文档更新版下载2014年01月29日使内嵌式jetty服务器支持jsp 【编程语言】2015年01月27日Android入门笔记-界面开发-Animation 【编程语言】2014年12月09日Android中库项目的使用方法图文介绍2014年01月30日策略模式的详情【编程语言】2014年12月25日网站进行搜索引擎优化(SEO)从选择域名开始2014年01月28日动态CSS,换肤技术2014年01月29日HDU1575TrA【矩阵快速幂】 【综合】2014年11月24日电路图绘制工具CircuitDiagram1.2发布 ,,2016年06月29日js清除input中type等于file的值域(示例代码)2014年01月29日程序员修炼之路-(3)排序(上):基本排序 【编程语言】2015年04月07日新手学JAVA(六)----处理随机性的数据 【移动开发】2015年05月27日JavaScript面向对象代码实践2014年01月29日ORA-01461错误解决 【互联网】2015年01月30日JavascriptWYSIWYG编程器,TinyMCE3.5.1发布 ,,2016年06月23日Android应用AsyncTask处理机制详解及源码分析 【移动开发】2015年05月29日TextView设置无下划线超链接 【架构设计】2014年11月04日uva10755(降维 +扫描) 【编程语言】2015年02月11日深度解析注册表修复不成功的原因2014年01月29日android抓取手机应用包名和类名 【编程语言】2014年12月11日使用org.w3c.dom.Element的setTextContent()、getTextContent()方法时出现编译错误【编程语言】2015年08月14日
我们保证
We guarantee
> psd效果文件手工切图,保证图片效果最好体积最小利于传输
> 100%手写的HTML(DIV+CSS)编码,绝对符合W3C标准
> 代码精简、css沉余量小、搜索引擎扫描迅速,网页打开快捷
> 应用Css Sprite能够减少HTTP请求数,提高网页性能
> 跨浏览器兼容(IE6、7、8、9,Firefox火狐,Chrome谷歌)