- 浏览: 682648 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (362)
- java基础 (33)
- html/css+div/javascript (17)
- Ajax/XML/JSON/XSL (7)
- JQuery (11)
- Extjs (1)
- JSP/Servlet (19)
- MVC模式 (4)
- struts 1 (17)
- Struts 2.3.4 (17)
- Spring 3.2 (26)
- Springmvc (3)
- Hibernate 4.1 (21)
- ibatis (6)
- Velocity模板语言 (2)
- Rose框架 (5)
- EJB (1)
- JUnit测试 (2)
- 数据库DB (24)
- 重构 / 设计模式 (3)
- 开发工具IDE (37)
- 数据结构与算法设计 (3)
- Android (12)
- Linux (4)
- bug集合 (29)
- 缓存技术(redis) (3)
- Lucene全文索引 (15)
- maven3.0.5 (4)
- 小工具集合 (18)
- 面试题 (5)
- 闲聊 (11)
- 其他 (4)
- 接口API (2)
- work (2)
- Flex (0)
- JMS (1)
- 开源项目集合 (1)
- 技术博客 (1)
- 分类04 (0)
- 分类05555 (0)
最新评论
-
小小小羊:
好屌...
java.lang.NoClassDefFoundError: org/aspectj/weaver/reflect/ReflectionWorld$Refle -
liubinli2005:
这个可以脱底spring。单独使用吗?
DAO层:jade -
cangbaotu:
我觉得对于开发者来说,能脚本化编写爬虫是一件挺开心的事情( ̄▽ ...
网页爬取 -
asjava:
很好的文章, 但每段代码清单都重复了一次.
spring 事务 -
xia635317478:
jethypc 写道验证码的session无法传过去啊 还是我 ...
登陆验证码(struts2实现)
模拟Spring原理
一、bean.xml
<beans> <bean id="u" class="com.bjsxt.dao.impl.UserDAOImpl" /> <bean id="userService" class="com.bjsxt.service.UserService" > <property name="userDAO" bean="u"/> </bean> </beans>
二、BeanFactory接口
三、BeanFactory接口实现类ClassPathXmlApplicationContextpackage com.bjsxt.spring;
public interface BeanFactory {
public Object getBean(String id);
}
package com.bjsxt.spring; import java.lang.reflect.Method; 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; public class ClassPathXmlApplicationContext implements BeanFactory { private Map<String , Object> beans = new HashMap<String, Object>(); //IOC Inverse of Control DI Dependency Injection public ClassPathXmlApplicationContext() throws Exception { SAXBuilder sb=new SAXBuilder(); Document doc=sb.build(this.getClass().getClassLoader().getResourceAsStream("beans.xml")); //构造文档对象 Element root=doc.getRootElement(); //获取根元素HD List list=root.getChildren("bean");//取名字为disk的所有元素 for(int i=0;i<list.size();i++){ Element element=(Element)list.get(i); String id=element.getAttributeValue("id"); String clazz=element.getAttributeValue("class"); Object o = Class.forName(clazz).newInstance(); System.out.println(id); System.out.println(clazz); beans.put(id, o); for(Element propertyElement : (List<Element>)element.getChildren("property")) { String name = propertyElement.getAttributeValue("name"); //userDAO String bean = propertyElement.getAttributeValue("bean"); //u Object beanObject = beans.get(bean);//UserDAOImpl instance String methodName = "set" + name.substring(0, 1).toUpperCase() + name.substring(1); System.out.println("method name = " + methodName); Method m = o.getClass().getMethod(methodName, beanObject.getClass().getInterfaces()[0]); m.invoke(o, beanObject); } } } public Object getBean(String id) { return beans.get(id); } }
四、UserService业务处理类
package com.bjsxt.service; import com.bjsxt.dao.UserDAO; import com.bjsxt.model.User; public class UserService { private UserDAO userDAO; public void add(User user) { userDAO.save(user); } public UserDAO getUserDAO() { return userDAO; } public void setUserDAO(UserDAO userDAO) { this.userDAO = userDAO; } }
五、测试模拟Spring原理
package com.bjsxt.service; import org.junit.Test; import com.bjsxt.dao.UserDAO; import com.bjsxt.model.User; import com.bjsxt.spring.BeanFactory; import com.bjsxt.spring.ClassPathXmlApplicationContext; public class UserServiceTest { @Test public void testAdd() throws Exception { BeanFactory applicationContext = new ClassPathXmlApplicationContext(); UserService service = (UserService)applicationContext.getBean("userService"); User u = new User(); u.setUsername("zhangsan"); u.setPassword("zhangsan"); service.add(u); } }
发表评论
-
spring 事务
2014-03-31 11:14 3400Spring 事务异常回滚 ... -
Spring定时器(Quartz)
2013-08-20 22:54 2774Spring定时器(Quartz) 1. ... -
模拟Spring的 IOC 和 DI
2013-08-15 21:42 1093模拟Spring的 IOC 和 DI 1.BeanFactor ... -
spring任务调度
2013-07-18 17:10 987spring任务调度 1,一个job对应一个处理类(bean ... -
获取ApplicationContext对象的几种方法
2013-01-29 10:47 5498方法一:在初始化时保 ... -
Spring 如何读取properties文件
2013-01-28 16:29 1517Spring 如何读取properties文件 ------ ... -
springSecurity的登录验证
2013-01-27 20:57 2373springSecurity的登录验证 一、Springse ... -
Spring事务配置的五种方式
2013-01-11 15:10 999Spring事务配置的五种方式 参考1:http://w ... -
ehcache缓存的使用
2013-01-11 15:10 966ehcache缓存的使用 1.ehcache缓存介绍:h ... -
在spring中如何处理oracle大字段
2013-01-10 12:45 1371在spring中如何处理oracle大字段 在spring ... -
spring事务管理
2012-12-06 14:34 636spring管理事务提交 http: ... -
spring中配置log4j
2012-11-10 16:30 1603log4j 和 slf4j slf4j和log4j用于做日志 ... -
spring每个包的详解
2012-11-09 16:53 916spring每个包的详解 spring.jar 是包含有完 ... -
当Spring管理Struts2时配置的scope="prototype"
2012-11-05 10:36 1011Spring scope="prototype&q ... -
web.xml配置加载spring
2012-11-05 10:36 975web.xml配置加载spring 第一种加载applica ... -
Spring中配置数据源
2012-11-04 20:08 1018Spring中配置数据源 ... -
DelegatingActionProxy
2012-10-31 09:53 1522DelegatingActionProxy org.spri ... -
Spring IOC实例化了哪些对象
2012-10-30 09:25 1390Spring IOC实例化了哪些对象 启动servlet容 ... -
<aop:pointcut />
2012-10-29 17:00 980<aop:config> <aop:po ... -
SSH项目解决乱码问题
2012-10-10 17:55 1176SSH解决乱码问题 第一种:利用spring的filte ...
相关推荐
通过实例讲述spring的实现原理,懂了原理用起来就会更加的清楚了.
NULL 博文链接:https://huchunyong1987.iteye.com/blog/836235
package com.ohc.spring; import java.lang.reflect.Method; import java.util.HashMap; import java.util.List; import java.util.Map; import org.jdom.Document; import org.jdom.Element; import org.jdom....
实现spring底层原理。 例如spring是如何创建bean的等等。
用一个小项目模拟出一个微型的spring项目,实现spring的核心功能-aop,ioc和自动注入,帮助初学者了解spring的运行原理,以后面试再也不怕碰到问spring原理的问题了
但又不同于一般的原理课,基本不翻源码,而是通过各种单元测试和模拟实现,带领学员更为感性地认识 Spring 底层。学完本课程能够收获:培养正确的学习源码方法;睥睨其它程序员的资本;唯一认清 Spring 的机会! ...
今天将公司的工厂类抽出来进行简单总结,同时加深对工厂类和spring原理的理解。
java 动态代理实现,模拟了spring实现aop的原理,对学习面向切面编程的朋友有帮助!
3. 如果一切正常,你会看到使用Java集合、XML API,以及反射技术模拟Spring的get注入和自定义的IoC容器实现的例子--get注入了Hello类和一个MyFrame类,并且实例化之后可以运行! 4. 看一下testDemoSpringDI()方法,...
Spring3_模拟Spring框架工作原理 用户模型类User.java package com.bebig.model; public class User { private String username; private String password; public String getPassword() { return password; ...
spring模拟,充分展示了spring底层的实现原理,清晰易懂
本文的主要内容就是学习Spring的开端,模拟一下Spring的实现,感兴趣的小伙伴可以参考一下
通过学习它们的原理和实际应用,您将能够更好地理解和利用Spring AOP来提高您的应用程序的可维护性和可扩展性。 内容亮点: JDK动态代理: 我们将详细介绍JDK动态代理的概念和工作原理。您将了解如何使用Java的...
使用ImportBeanDefinitionRegistrar、JDK代理、FactoryBean模拟mybatis原理
模拟spring ioc aop的功能,理解spring ioc 和 aop 的实现原理和机制。
│ 2.2 手写模拟Spring底层原理.mp4 │ 2.3 Spring之底层架构核心概念解析.mp4 │ 2.4 Spring之Bean生命周期源码解析(上).mp4 │ 2.5 Spring之Bean生命周期源码解析(下).mp4 │ 2.6 Spring之依赖注入源码解析...
spring-cloud-discoveryClient技术实现负载均衡操作(负载原理).zip 使用DiscoveryClient技术模拟实现RestTemplate本地负载均衡的原理
通过请求方法限定:模拟请求方法 通过请求/请求头参数限定:示例 通过请求/请求头参数限定:更多 目录 通过注解绑定:示意图 通过注解绑定:示例 通过注解绑定:小心抛出异常 使用命令/表单对象绑定 使用Servlet API对象...
经过历时一年的重大调整改版而成的,本书延续了上一版本追求深度,注重原理,不停留在技术表面的写作风格,力求使读者在熟练使用Spring的各项功能的同时,还能透彻理解Spring的内部实现,真正做到知其然知其所以然。...
通过请求方法限定:模拟请求方法 通过请求/请求头参数限定:示例 通过请求/请求头参数限定:更多 目录 通过注解绑定:示意图 通过注解绑定:示例 通过注解绑定:小心抛出异常 使用命令/表单对象绑定 使用Servlet ...