亚博体育什么是Ioc容器?

亚博体育yb9461分析道:
2.1.Ioc容器

BeanFactory: Spring最底层的接口,只提供了的IoC功能,负责创建、组装、管理bean;使用了懒加载,getBean时候才会初始化Bean;
ApplicationContext接口:继承了BeanFactory,除此之外还提供AOP集成、国际化处理、事件传播、统一资源加载等功能;在初始化容器的时候就会初始化Bean;
1.1.bean实例化方式(需要使用@Autowired注解来声明)

构造器实例化(无参数构造器);
静态工厂方法实例化:解决系统遗留问题;
实例工厂方法实例化:解决系统遗留问题;
实现FactoryBean接口实例化;
ps:都需要在xml文件里进行设置;

1.2.bean作用域

singlecon:单例,在Spcing IoC容器中仅存在一个bean实例(默认的scope);
prototype:多例,每次从容器中调用Bean时,都返回一个新的实例,即每次调用getBean()时,相当于执行new XxxBean(): 会在容器启时创建对象;
request:用于web开发,将Bean加入request范围,request.setAttribute("xxx"),在同一个reques获得同一个Bean;
session:用于web开发, 将Bean放入Session范围,在同一个Session中获得同一个Bean;
globalSession: 一般用于porlet应用环境,分布式系统存在全局session概念(单点登录),如果不是porlet环境,globalSession等同于Session;
1.3.bean的创建和销毁

init-method: bean生命周期初始化方法,bean创建后会进行调用;
destroy-method:容器被销毁的时候,如果bean被容器管理,bean销毁之前调用该方法;
ps:单例bean会执行销毁方法,多例bean是不会销毁容器的,因为bean可能有多个容器可能会再次创建(因为bean要往容器注册),造成资源浪费;

2.DI依赖注入

指Spring创建对象的过程中,将对象依赖属性(常量,对象,集合)通过设置值给该对象。
可以通过调用对象的setter方法.
可以在创建对象的时候(调用构造器),同时设置对象的属性值.
3.DI注解

使用@Autowired注解,在配置xml文件进行DI依赖注入注解配置<context:annotation- config />;是Spring规范提供的;

Autowired注解寻找bean的方式:
首先按照依赖对象的类型找,如果找到,就是用setter或者字段直接注入;
如果在Spring上下文中找到多个匹配的类型,再按照名字去找,如果没有匹配报错;
使用@Resource注解(类似于Autowired注解),是JavaEE规范提供的;

4.IoC注解

使用@Component?("myDataSource") 组件如果不写value属性值,此时bean的id默认是类的首字母小写 ;

等价于<bean id="myDataSource" class="cn.wolfcode.ioc.MyDataSource"/ >,但是需要在xml进行IoC容器注解配置:<context:component-scan base-package="com.miaosha.*"/>br/>类似@Service,@Controller,@Repository注解,全部放在类上;@Component(泛指组件)
配置bean作用域需要加入@Scope ("prototype");
配置init和destroy方法需要在对应方法,加上注解@PostConstruct;@PreDestroy;

亚博体育什么是Ioc容器?

原文地址:https://blog.51cto.com/14654265/2462669

时间: 2024-07-30 12:51:00

亚博体育什么是Ioc容器?的相关文章

亚博体育DAO持久化

亚博体育yb9461分析DAO持久化的意思.2.1.事务 在一个事务方法中,调用了其他事务的方法,此时事务该如何传递,按照什么规则传播. 1.1事务传播规则情况一:需要遵从当前事务 REQUIRED: 必须存在一个事务,如果当前存在一个事务,则加入到该事务中,否则,新建一个事务:(使用比较多)SUPPORTS: 支持当前事务.如果当前存在事务,则使用该事务否则以非事务形式运行:MANDATORY: 必须要存在事务,如果当存在事务,就使用该事务,否则,抛出异常:1.2事务传播规则情况二:不遵从当前

亚博体育:前端学习路线图

亚博体育yb69461告诉大家如何零基础开始学习前端:一.基础1.学习HTML基础 HTML给你的网页赋予了结构.它就像是人的骨架那样让你保持站立.首先你需要去学习语法以及它必须提供的一切.你的学习应该聚焦在下面这些东西上: 学习HTML基础,了解如何编写语义HTML理解如何把网页分成section(段落),以及如何正确组织DOM(文档对象模型)现在很多html5的新标签也很有用,需要进行了解1实践建议:一旦你学习了HTML基础,至少要制作5个HTML网页.我建议你随便找一个网站,比如看看Git

亚博体育html 基础标签!

亚博体育yb9461学习html时该学习哪些基础标签!加粗:b(<b>内容</b>),strong(<strong>内容</strong>) 倾斜:i(<i>内容</i>),em(<em>内容</em>) 删除线:del(<del>内容</del>),s(<s>内容</s>) 下划线:u(<u>内容</u>),ins(<ins>

亚博体育初识HTML!

当亚博体育yb9461初识HTML应该怎么快速掌握HTML文档格式 // 文档格式<!DOCTYPE html><html><head><meta charset="utf-8"><title>文档标题</title></head><body>文档内容......</body></html> 注意:所有内容都写到body标签里面 常用的HTML标签 注释 // 注释&

2020年亚博体育加密资产十大词

亚博体育yb1484点威ip关键词1:“比特币” 2020年,对于大多数人来说,关注点仍然是“比特币”,而非“加密货币”.行业外的人其实只关心比特币,他们并不那么在乎除了比特币以外的事.原因是可以很容易向别人解释比特币,甚至是向一个五岁的孩子解释它.笔者不在乎以太坊群众的抱怨(原作者也爱ETH),这个十年将不会再出现价格“大动荡”,因为在像2018年那样的崩溃之后,人们只想投资他们认为安全可靠而且简单易懂的资产.比特币的攻击面最低(因为功能差),有用最长的历史记录(最早创立)以及最容易理解的“模

区块链亚博体育十大值得关注趋势

如果亚博体育yb1484点威ip说2018年是区块链和数字货币的元年,2019年就是技术应用大爆发的一年.我们见证了比特币和以太坊熬过漫长的熊市,众多区块链协议开始成熟应用并不断扩展发展空间:我们见证了区块链技术作为国家创新的重要突破口被广泛重视,各级政府积极研究并推动发展:我们见证了各种新联盟新合作的诞生,各方共建区块链网络蓬勃进步:我们也见证了新型数字经济的兴起与创新监管的协同共进:我们还见证了Libra的诞生与央行数字货币(DCEP)的崛起……2019年是不平凡的一年. 我们感知过去也面向

亚博体育比特币操作系统

前言vip亚博体育yb1484点威哎劈:人类擅长线性思维,而对非线性的发展很难理解.这导致我们在短期内对事物过于乐观,而长期内低估事物发展的速度,正如人们当初对互联网的估计一样.而比特币作为一种新的价值存储和交换媒介,它天然具有网络效应.一旦突破了临界点,也许它会给我们带来很多意外的惊喜.本文作者是Aleksandar Svetski,由“蓝狐笔记”社群的“CiQi“翻译. “经济学家”......是我们所有人中最盲目的人. 网络是另外一个固有的非人类直觉可以把握的领域.纵观整个人类历史,我们非

Android 商城类亚博体育应用实战之购物车附源码

本文为实战类项目亚博体育(yb5.io),所以陈述的逻辑为实现流程 + 核心代码,主要实现的还是购物车的动画与结算,首先我们来看下整体的效果图 购物车一般都是后台存储的,这里因为是模拟数据,所以就不用存储了,直接将数据储存在内存中即可,也算是偷个懒儿~ ViewPager轮播 首先我们要处理一下轮播,其实轮播还是比较简单的,就是一个ViewPager + Handler ,先来看下 PagerAdapter的代码吧! 原文地址:https://www.cnblogs.com/yb5-io/p/1

记一次莫名其妙的报错亚博体育 Failed resolution of: Lorg/apache/http/params

2019-04-25  亚博体育 (yb5.io)11:11:49 App Version: 1.0.7_7 OS Version: 9_28 Vendor: OPPO Model: PCAM00 CPU ABI: armeabi-v7ajava.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/params/BasicHttpParams;     atcom.esri.core.internal.io.hand