1.      Spring最主要的就是IOC控制反转。通过IOC容器,配置对象的依赖关系。

通过BeanFactory factory=new ClassPathXMlApplicationContext(“….xml”);

UserManagerusrManager=(UserManager)factory.getBean(“useManager”);

/*
* userManager已经通过xml为我们配置上了UserManagerImpl。

*在UserManagerImpl里面,通过set方法,为userDao配上了userDao4OracleImpl
*/

userManager.set(…);

Xml:

<bean id="userDao4MySqlImpl"class="com.bjsxt.spring.dao.UserDao4MySqlImpl"/>

<beanid="userDao4OracleImpl" class="com.bjsxt.spring.dao.UserDao4OracleImpl"/>

<beanid="userManager"  class="com.bjsxt.spring.manager.UserManagerImpl">

<!-- 构造方法注入

<constructor-argref="userDao4OracleImpl"/>

-->

<!—通过set方法为userDao这个变量注入userDao4OracleImpl -->

<propertyname="userDao" ref="userDao4OracleImpl"/>

</bean>

2.      BeanFactory是一个重量级的,最好只初始化一次。所以我们在web.xml中对Spring的xml配置文件进行配置。

<!--listener负责读取我们context-param的配置文件,然后生成beanfactory -->

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>

classpath:applicationContext-actions.xml,

classpath:applicationContext-beans.xml,

classpath:applicationContext-common.xml

</param-value>

</context-param>

<listener>

<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

如果再类中需要BeanFactory这个变量我们需要用如下方法调用:

BeanFactory  factory =WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext());

//用BeanFactory足够。其实后面的方法返回的是ApplicationContext类,他是继承了BeanFactory,并封装了一些方法。

//ApplicationContext pc =WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext());

UserManageruserManager = (UserManager)factory.getBean("userManager");

userManager.login(laf.getUsername(),laf.getPassword());

3.      出现BeanFactory存在一定的依赖查找。但是这种方法也有一定的应用。

现在理清一下思路,看上面1这个例子。如果想要userManager这个对象,但是不是通过BeanFactory创建,然后用getBean方法得到. 而是希望当创建一个类的时候,自动通过set方法为我们创建userManager。那么这个类必须被Spring管理。比如Structs和Spring的集成,就是通过在structs.xml中的DelegatingActionProxy,进行factory的getBean,将 UserAction创建,然后set方法获得userManager。

<bean name="/index"class="com.env.business.actions.UserAction">

<propertyname="userManager" ref="userManager"/>

</bean>

转载于:https://www.cnblogs.com/hainange/archive/2012/03/31/6153652.html

对Spring的一些个人理解相关推荐

  1. Spring容器与上下文理解

    2019独角兽企业重金招聘Python工程师标准>>> 转自:https://www.cnblogs.com/chenbenbuyi/p/8166304.html 个人感觉介绍的很不 ...

  2. Spring容器和Spring应用上下文的理解

    1. 什么是Spring容器?作用是什么? 1.1 什么是Spring容器? Spring容器称为IOC容器,即:控制反转 应用程序里不用再过问对象的创建和管理对象之间的依赖关系了,都让IOC容器给代 ...

  3. Spring Data JPA 之 理解 Persistence Context 的核心概念

    21 理解 Persistence Context 的核心概念 21.1 Persistence Context 相关核心概念 21.1.1 EntityManagerFactory 和 Persis ...

  4. Spring AOP思想的理解和简单实现

    Spring之Aop的简单实现 所谓Aop,即Aspect Oriented Programming,面向方面编程.这个概念听起来可能有点抽象,所以在这里我们先引入Aop中的一些术语并结合它们来对Ao ...

  5. Spring 依赖注入的理解及三种注入方式

    Spring 依赖注入概念和三种注入方式(理解及应用) 什么是注入 要了解Spring的三种注入方式首先前提是得先了解一下什么是注入,相信很多人对这个概念都是模糊不清的,网上的解释是这样的: 依赖注入 ...

  6. 对Spring loC DI的理解

    文章转自https://www.cnblogs.com/Mr-Rocker/p/7721824.html,仅供个人学习所用,好东西当然要多多学习啊(#^.^#) 学习过Spring框架的人一定都会听过 ...

  7. 我对spring springcloud的简单理解

    1.说说你对Spring IOC的理解? 1)IOC就是控制反转,是指创建对象的控制权的转移,以前创建对象的主动权和时机是由自己把控的,而现在这种权力转移到Spring容器 中,并由容器根据配置文件去 ...

  8. 透析Spring(一): Spring之IoC容器理解

    序言 记得刚毕业那会儿,出来招工作被问到Spring的核心时,都觉得简单的一笔,直接说不就是IoC(控制反转)和DI(依赖注入)么,然后省略一万字对两个名词的解释.最近空来整理了一下Spring中Io ...

  9. Spring 几种事务理解测试

    传播属性 环境准备 异常类 调用者 总结 Github地址 学习东西要知行合一,如果只是知道理论而没实践过,那么掌握的也不会特别扎实,估计过几天就会忘记,接下来我们一起实践来学习Spring事务的传播 ...

  10. spring IOC和DI 理解

    IOC(控制反转)和DI(依赖注入)是spring中的重要组成部分,下面是个人的一些理解,不代表官方. 1.IOC是什么? IOC:全名是Inversion of Controller 中文解释是控制 ...

最新文章

  1. MySQL Xtrabackup备份和恢复
  2. pythonjs语法_Python语法精解:JSON语法
  3. 分布式服务跟踪及Spring Cloud的实现
  4. Cocos Creator快速开通联网服务教程
  5. 软件测试-PR在运行场景的时候报错测试机:localhost,连接失败!请检查执行器与压力机之间的网络连接,以及场景组中各个项目配置的路径
  6. shell脚本的执行方式
  7. 神奇的 Go init 函数
  8. 生产三码 黑苹果_黑苹果OC配置工具:OpenCore Configurator v2.15.2.0
  9. HttpClientFactory 结合 Polly 轻松实现重试机制
  10. 限定概率抽奖_守护星已点亮,内测皮肤得到没?从天美抽奖概率分析:地址什么梗...
  11. java 运用poi读取Excel 文件代码 demo
  12. 多线程的那点儿事(之大结局)
  13. 电脑f2还原系统步骤_电脑还原系统方法步骤详解
  14. vmd分解matlab程序,matlab中使用VMD(变分模态分解)
  15. 将GitHub源代码打包成jar包
  16. 数据库(SQL)面试题,基础知识(超全面)
  17. 什么是死亡之 Ping 攻击?
  18. 声鉴卡HTML5网页源码
  19. html表格中加背景图片,html设置表格背景图片.doc
  20. java 撤销恢复按钮_java文本的撤销和恢复

热门文章

  1. PHP 入门 - 10.应用技术
  2. 吴恩达机器学习--单变量线性回归【学习笔记】
  3. C#pictureBox公共控件的使用
  4. win8.1和wp8.1共用代码,需要注意的一些问题
  5. Qt 读写XML文件
  6. 雅虎与软银构和:拟出售雅虎日本35%股份
  7. 连接数据库报“You have an error in your SQL syntax”异常的解决
  8. HTTP调试工具:Fiddler 介绍二
  9. qlabel设置换行符无效_php 字符串中的\n换行符无效、不能换行的解决方法
  10. (九)React面试真题演练