- 浏览: 681921 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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的 IOC 和 DI
1.BeanFactory 接口
2.ClassPathXmlApplicationContex实现类
3.applicationContext-beans.xml配置文件
4.UserDAO接口和UserDAOImpl实现类
5.UserService接口和实现类UserServiceImpl
6.测试类
1.BeanFactory 接口
public interface BeanFactory { public Object getBean(String id); }
2.ClassPathXmlApplicationContex实现类
public class ClassPathXmlApplicationContext implements BeanFactory { private Map<String , Object> beans = new HashMap<String, Object>(); /** * 模拟控制反转(IOC)+依赖注入(DI) * 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); } }
3.applicationContext-beans.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>
4.UserDAO接口和UserDAOImpl实现类
public interface UserDAO { public void save(User user); } public class UserDAOImpl implements UserDAO { public void save(User user) { //Hibernate //JDBC //XML //NetWork System.out.println("user saved!"); } }
5.UserService接口和实现类UserServiceImpl
public interface UserService { public void add(User user); } public class UserServiceImpl implements 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; } }
6.测试类
import com.momo.spring.BeanFactory; import com.momo.spring.ClassPathXmlApplicationContext; public class IOCTest { @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); } } import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class IOCTest { @Test public void testAdd() throws Exception { ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");//BeanFactory也可以 UserService service = (UserService)ctx.getBean("userService"); User u = new User(); u.setUsername("zhangsan"); u.setPassword("zhangsan"); service.add(u); } }
发表评论
-
spring 事务
2014-03-31 11:14 3399Spring 事务异常回滚 ... -
Spring定时器(Quartz)
2013-08-20 22:54 2771Spring定时器(Quartz) 1. ... -
spring任务调度
2013-07-18 17:10 984spring任务调度 1,一个job对应一个处理类(bean ... -
获取ApplicationContext对象的几种方法
2013-01-29 10:47 5497方法一:在初始化时保 ... -
Spring 如何读取properties文件
2013-01-28 16:29 1515Spring 如何读取properties文件 ------ ... -
springSecurity的登录验证
2013-01-27 20:57 2368springSecurity的登录验证 一、Springse ... -
Spring事务配置的五种方式
2013-01-11 15:10 996Spring事务配置的五种方式 参考1:http://w ... -
ehcache缓存的使用
2013-01-11 15:10 964ehcache缓存的使用 1.ehcache缓存介绍:h ... -
在spring中如何处理oracle大字段
2013-01-10 12:45 1370在spring中如何处理oracle大字段 在spring ... -
spring事务管理
2012-12-06 14:34 635spring管理事务提交 http: ... -
spring中配置log4j
2012-11-10 16:30 1599log4j 和 slf4j slf4j和log4j用于做日志 ... -
spring每个包的详解
2012-11-09 16:53 915spring每个包的详解 spring.jar 是包含有完 ... -
当Spring管理Struts2时配置的scope="prototype"
2012-11-05 10:36 1008Spring scope="prototype&q ... -
web.xml配置加载spring
2012-11-05 10:36 972web.xml配置加载spring 第一种加载applica ... -
Spring中配置数据源
2012-11-04 20:08 1018Spring中配置数据源 ... -
DelegatingActionProxy
2012-10-31 09:53 1519DelegatingActionProxy org.spri ... -
Spring IOC实例化了哪些对象
2012-10-30 09:25 1388Spring IOC实例化了哪些对象 启动servlet容 ... -
<aop:pointcut />
2012-10-29 17:00 976<aop:config> <aop:po ... -
SSH项目解决乱码问题
2012-10-10 17:55 1172SSH解决乱码问题 第一种:利用spring的filte ... -
sping学习
2012-10-10 17:43 952spring知识点学习 、
相关推荐
Spring IOC AOP MVC 简单例子
(3)MarketDao类:模拟数据库访问,包含属性对象 Market m,和方法Product findByid(String id)来实现根据商品编号查找商品,方法List<product> findAll()来实现返回仓库(商品集合),方法void addpro(Product p)...
3. 如果一切正常,你会看到使用Java集合、XML API,以及反射技术模拟Spring的get注入和自定义的IoC容器实现的例子--get注入了Hello类和一个MyFrame类,并且实例化之后可以运行! 4. 看一下testDemoSpringDI()方法,...
xml java系统源码 IoC 是一款 spring ioc 核心功能简化实现版本,便于学习和理解原理。 创作目的 ...Injection,简称DI)。 通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体
(2) spring-beans.jar 这个jar文件是所有应用都要用到的,它包含访问配置文件、创建和管理bean以及进行Inversion of Control / Dependency Injection(IoC/DI)操作相关的所有类。如果应用只需基本的IoC/DI支持,...
第三课:模拟Spring功能 5 第四课:搭建sping的运行环境 8 一、 建立一个新的项目 8 二、 建立spring的配置文件 8 三、 引入spring的jar包 8 四、 测试代码: 8 五、 注意接口的使用: 8 第五课:IOC(DI)配置及应用 ...
这个jar文件是所有应用都要用到的,它包含访问配置文件、创建和管理bean以及进行Inversion of Control / Dependency Injection(IoC/DI)操作相关的所有类。如果应用只需基本的IoC/DI支持,引入spring-core.jar及...
这个jar文件是所有应用都要用到的,它包含访问配置文件、创建和管理bean以及进行Inversion of Control / Dependency Injection(IoC/DI)操作相关的所有类。如果应用只需基本的IoC/DI支持,引入spring-core.jar及...
面向抽象编程 Jdom的基本使用 IOC(DI)配置及应用 模拟Spring功能 搭建sping的运行环境 annotation方式Spring Spring整合Hiberante3 Spring整合-SSH DTO、VO SSH整合的jar包 SSH整合存在的问题
第三课:模拟Spring功能 5 第四课:搭建sping的运行环境 8 一、 建立一个新的项目 8 二、 建立spring的配置文件 8 三、 引入spring的jar包 8 四、 测试代码: 8 五、 注意接口的使用: 8 第五课:IOC(DI)配置及应用 ...
七、模拟spring(AOP, IOC, DI, BeanPostProcessor及许多常用注解) 八、使用spring FactoryBean技术模拟mybatis MapperScan注解 https://github.com/AvengerEug/spring/tree/develop/implement-mapperscan 九、...
spring-simple A rough spring framework for fun function IOC DI webmvc aop 忽略了细节性的异常处理等事项,旨在模拟实现核心的简单的Spring的容器功能