spring Ioc 控制

news/2024/7/5 13:21:38 标签: python, java

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

1.1  控制反转:

         1.控制:传统Java SE程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象;而IoC是有专门一个容器来创建这些对象,即由Ioc容器来控制对象的创建;谁控制谁?当然是IoC 容器控制了对象;控制什么?那就是主要控制了外部资源获取(不只是对象包括比如文件等)。

          2:反转:

                            1.传统的                                                      2.spring

     a02c1e3154ef4be3f15fb91275a26494__1.JPG    6fdf1048726cc2edcac4fca685f050ac__2.JPG

 

2.1 IoC和DI:

         理解DI的关键是:“谁依赖谁,为什么需要依赖,谁注入谁,注入了什么”

        2.1.1:

           谁依赖于谁:当然是应用程序依赖于IoC容器

           为什么需要依赖:应用程序需要IoC容器来提供对象需要的外部资源;

          ●谁注入谁:很明显是IoC容器注入应用程序某个对象,应用程序依赖的对象;

          ●注入了什么:就是注入某个对象所需要的外部资源(包括对象、资源、常量数据)。

       2.1.1 :在Spring中BeanFactory是IoC容器的实际代表者

                在Spring Ioc容器的代表就是org.springframework.beans包中的BeanFactory接口,BeanFactory接口提供了IoC容器最基本功能;而org.springframework.context包下的ApplicationContext接口扩展了BeanFactory,还提供了与Spring AOP集成、国际化处理、事件传播及提供不同层次的context实现 (如针对web应用的WebApplicationContext)。简单说, BeanFactory提供了IoC容器最基本功能,而 ApplicationContext 则增加了更多支持企业级功能支持。ApplicationContext完全继承BeanFactory,因而BeanFactory所具有的语义也适用于ApplicationContext。

容器实现一览:

        

 • XmlBeanFactoryBeanFactory实现,提供基本的IoC容器功能,可以从classpath或文件系统等获取资源;

  (1)  File file = new File("fileSystemConfig.xml");

           Resource resource = new FileSystemResource(file);

           BeanFactory beanFactory = new XmlBeanFactory(resource);

  (2)

          Resource resource = new ClassPathResource("classpath.xml");                 

          BeanFactory beanFactory = new XmlBeanFactory(resource);

• ClassPathXmlApplicationContextApplicationContext实现,从classpath获取配置文件;

         BeanFactory beanFactory = new ClassPathXmlApplicationContext("classpath.xml");

• FileSystemXmlApplicationContextApplicationContext实现,从文件系统获取配置文件。

         BeanFactory beanFactory = new FileSystemXmlApplicationContext("fileSystemConfig.xml");

ApplicationContext接口获取Bean方法简介:

• Object getBean(String name) 根据名称返回一个Bean,客户端需要自己进行类型转换;

• T getBean(String name, Class<T> requiredType) 根据名称和指定的类型返回一个Bean,客户端无需自己进行类型转换,如果类型转换失败,容器抛出异常;

• T getBean(Class<T> requiredType) 根据指定的类型返回一个Bean,客户端无需自己进行类型转换,如果没有或有多于一个Bean存在容器将抛出异常;

• Map<String, T> getBeansOfType(Class<T> type) 根据指定的类型返回一个键值为名字和值为Bean对象的 Map,如果没有Bean对象存在则返回空的Map

3.1  依赖和依赖注入

     泛化:表示类与类之间的继承关系、接口与接口之间的继承关系;

     实现:表示类对接口的实现;

 

转载于:https://my.oschina.net/niceyaohang/blog/1785053


http://www.niftyadmin.cn/n/1476458.html

相关文章

CF 103E Buying Sets 最大权闭合子图,匹配 难度:4

http://codeforces.com/problemset/problem/103/E 这道题首先一看就很像是最大权闭合子图,但是我们可以认为现在有两种点,数字和集合点,我们需要消除数字点的影响才能直接运用最大权闭合子图. 进行二分匹配,使得每个集合都唯一匹配一个数字,买下一个集合点,则意味着该集合中所有…

美国计算机考研难度排名,2019USnews美国大学研究生cs专业百强排名一览

一、美国大学研究生CS专业介绍美国计算机科学专业(Computer Science&#xff0c;简称CS)&#xff0c;是研究信息过程、用以表达此过程的信息结构和规则及其在信息处理系统中实现的学科。CS是一门包含各种各样与计算和信息处理相关主题的系统学科&#xff0c;从抽象的算法分析、…

python之路模块

time模块 1 print time.time()2 print time.mktime(time.localtime())3 4 print time.gmtime() #可加时间戳参数5 print time.localtime() #可加时间戳参数6 print time.strptime(2014-11-11, %Y-%m-%d)7 8 print time.strftime(%Y-%m-%d) #默认当前时间9 print time.st…

Git免输入密码提交

1、首先你需要下载 http://files.cnblogs.com/files/zhanqun/putty.7z 文件夹内包含下面这些文件&#xff1a; 2、然后点击PUTTYGEN.EXE文件 点击“Generate”并狂动鼠标生成密钥&#xff08;自己使用&#xff0c;建议不要设置Key passphrase),然后保存public key和private key…

win7计算机资源管理器卡住,Win7资源管理器未响应的解决方法

Win7系统是最多人在使用的一款系统了&#xff0c;但是在使用过程中也是会出现问题的。就拿资源管理器来说吧&#xff0c;有的时候会遇到资源管理器未响应&#xff0c;这的确是很烦人啊&#xff01;为什么会出现这样的问题呢&#xff1f;那既然出现了这样的问题要如何解决呢&…

手把手教你跑Larave框架实战笔记系列之二

系列之一为童鞋们搭好了舞台&#xff0c;今天正式登台跑框架了…… 从“路由”开始&#xff0c;玩一把“Hellow world!” Route::get(‘/’, function () { //return view(‘welcome’); return ‘Hellow world!’; }); laravel 的每一个路由是需要手动定义的&#xff0c;默认欢…

计算机应用基础开卷吗,《计算机应用基础》2015年12月期末开卷考试指导.doc

《计算机应用基础》2015年12月期末开卷考试指导0362《计算机应用基础》2015年12月期末开卷考试指导一、考试说明1、考试形式&#xff1a;开卷2、考试时间&#xff1a;90分钟3、考试题型及所占分数如下&#xff1a;(1)单选题(每题1分&#xff0c;共计40分)(2)操作题(共7小题&…

memcached安装

下载并安装Memcache服务器端服务器端主要是安装memcache服务器端.下载&#xff1a;http://www.danga.com/memcached/dist/memcached-1.2.2.tar.gz另外&#xff0c;Memcache用到了libevent这个库用于Socket的处理&#xff0c;所以还需要安装libevent&#xff0c;libevent的最新版…