- 浏览: 698569 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 3441Spring 事务异常回滚 ... -
Spring定时器(Quartz)
2013-08-20 22:54 2805Spring定时器(Quartz) 1. ... -
spring任务调度
2013-07-18 17:10 1026spring任务调度 1,一个job对应一个处理类(bean ... -
获取ApplicationContext对象的几种方法
2013-01-29 10:47 5579方法一:在初始化时保 ... -
Spring 如何读取properties文件
2013-01-28 16:29 1537Spring 如何读取properties文件 ------ ... -
springSecurity的登录验证
2013-01-27 20:57 2451springSecurity的登录验证 一、Springse ... -
Spring事务配置的五种方式
2013-01-11 15:10 1034Spring事务配置的五种方式 参考1:http://w ... -
ehcache缓存的使用
2013-01-11 15:10 1022ehcache缓存的使用 1.ehcache缓存介绍:h ... -
在spring中如何处理oracle大字段
2013-01-10 12:45 1414在spring中如何处理oracle大字段 在spring ... -
spring事务管理
2012-12-06 14:34 668spring管理事务提交 http: ... -
spring中配置log4j
2012-11-10 16:30 1644log4j 和 slf4j slf4j和log4j用于做日志 ... -
spring每个包的详解
2012-11-09 16:53 963spring每个包的详解 spring.jar 是包含有完 ... -
当Spring管理Struts2时配置的scope="prototype"
2012-11-05 10:36 1087Spring scope="prototype&q ... -
web.xml配置加载spring
2012-11-05 10:36 1019web.xml配置加载spring 第一种加载applica ... -
Spring中配置数据源
2012-11-04 20:08 1047Spring中配置数据源 ... -
DelegatingActionProxy
2012-10-31 09:53 1585DelegatingActionProxy org.spri ... -
Spring IOC实例化了哪些对象
2012-10-30 09:25 1441Spring IOC实例化了哪些对象 启动servlet容 ... -
<aop:pointcut />
2012-10-29 17:00 1014<aop:config> <aop:po ... -
SSH项目解决乱码问题
2012-10-10 17:55 1211SSH解决乱码问题 第一种:利用spring的filte ... -
sping学习
2012-10-10 17:43 982spring知识点学习 、
相关推荐
**模拟Spring的IOC** 在Java世界中,Spring框架以其强大的依赖注入(Dependency Injection,简称DI)和控制反转(Inversion of Control,简称IOC)能力,成为企业级应用开发的首选框架之一。理解并模拟Spring的IOC...
这篇博客“java模拟spring ioc”很可能是探讨如何在没有Spring框架的情况下,使用纯Java代码来实现类似Spring的IOC功能。以下将详细介绍Spring的IOC和DI概念以及如何模拟这些概念。 **依赖注入(Dependency ...
在实际应用中,DI通常作为IoC容器的一部分来实现,例如Spring框架中的BeanFactory或ApplicationContext,它们都提供了依赖注入的功能,从而帮助开发人员遵循IoC的原则,构建出更加灵活、可维护的软件系统。...
下面我们将深入探讨这个"模拟spring IOC非常好的事例"所涵盖的知识点。 首先,我们需要理解什么是IOC。IOC是一种设计模式,它的主要思想是将对象的创建和管理权交给一个外部容器,而不是由对象自身来负责。这样可以...
这个例子展示了如何模拟Spring的IOC和DI。虽然实际的Spring框架提供了更强大和复杂的功能,如自动扫描、AOP(面向切面编程)、事务管理等,但这个简单的模拟可以帮助我们理解核心理念。通过这个小Demo,你应该能更好...
在这个模拟Spring IoC的项目中,我们可以深入理解以下几个关键知识点: 1. **容器的概念**:Spring IoC容器是管理对象及其依赖关系的核心组件。在这个模拟项目中,会有一个类或接口扮演容器的角色,负责创建对象、...
这个练习分为三个主要部分,旨在帮助我们掌握XML配置文件的读取,模拟Spring的IoC机制,以及对Struts框架的简单模拟。下面将逐一解析这些知识点。 **1. XML读取** XML(Extensible Markup Language)是一种通用的...
例如,`SpringIOC`目录中的配置文件(如`applicationContext.xml`)用于定义bean的定义和它们之间的依赖关系。通过XML或注解方式声明bean,Spring可以自动管理bean的实例化、初始化和销毁,从而简化了代码并提高了可...
Spring IOC,全称...通过`TestSpringIoc`的测试,我们可以确保Spring IOC的配置和使用符合预期,保证了代码的正确性和灵活性。同时,这样的测试也有助于理解和学习Spring IOC的工作机制,提升对Spring框架的理解。
Spring框架是Java开发中不可或缺的一部分,它通过提供控制反转(IOC)和面向切面编程(AOP)等核心特性,极大地简化了企业级应用的构建。让我们深入探讨这两个概念及其在Spring中的实现机制。 首先,Spring的控制...
在`YQIoc`这个压缩包中,可能包含了实现简单模拟Spring IoC容器的代码。通常,这个模拟会包含以下几个部分: 1. **Bean定义**:这是描述对象如何创建和配置的数据结构。在我们的例子中,bean定义可能是以XML形式...
(3)MarketDao类:模拟数据库访问,包含属性对象 Market m,和方法Product findByid(String id)来实现根据商品编号查找商品,方法List<product> findAll()来实现返回仓库(商品集合),方法void addpro(Product p)...
总结来说,模拟Spring IOC是一个实践性的学习过程,它可以帮助我们深入理解控制反转和依赖注入的概念。通过自己动手实现,我们可以更好地掌握Spring框架的核心机制,这对于任何想要在Java企业级开发中使用Spring的人...
在提供的压缩包文件"xml_bean"中,可能包含了示例的XML配置文件和相关的Java类,你可以通过分析这些文件来加深对Java解析XML和模拟Spring IOC的理解。实际项目中,Spring框架提供了更高级的功能,如自动扫描、注解...
在 Spring 中,IOC(Inversion of Control,控制反转)和 DI(Dependency Injection,依赖注入)是两个核心概念,而 AOP(Aspect Oriented Programming,面向切面编程)则是实现模块化和解耦的重要工具。现在,我们...
在Java开发领域,Spring...通过这个模拟项目,开发者可以深入了解Spring IoC的基本原理,学习如何在没有Spring框架的情况下手动管理对象的生命周期和依赖关系,这对于理解Spring框架的工作机制和优化代码结构大有裨益。
在Spring中,实现IOC的主要方式有两种:依赖注入(Dependency Injection,DI)和基于XML的配置。在这个项目中,可能结合了这两种方法。依赖注入可以通过构造函数注入、setter方法注入或接口注入来实现,使得对象间的...
在提供的例子中,你可以看到如何创建一个Bean工厂,模拟Spring的Bean定义和实例化过程。例如,通过XML配置文件或注解来声明Bean及其依赖,并在需要时由容器负责注入。 接下来,我们转向AOP。AOP允许开发者定义“切...
描述中的链接指向了CSDN博客的一个文章,虽然具体内容无法直接复制到这里,但我们可以根据文章标题推测,该文章详细介绍了如何从零开始构建一个简单的IOC容器,以此来模拟Spring框架的工作原理。通过这种方式,学习...
总结,Spring的IOC原理是通过控制反转和依赖注入来降低对象间的耦合,提升系统的可扩展性和可维护性。它提供了一种高效的方式来管理和组合对象,使得开发者可以专注于业务逻辑的实现,而非对象的创建和管理。