Spring学习笔记一

本文介绍了Spring框架的核心概念——IoC容器与依赖注入。详细解释了BeanFactory和ApplicationContext的作用及区别,展示了不同类型的Bean注入方式,并探讨了自动装配的策略。此外,还介绍了Spring AOP的基本概念。
摘要由CSDN通过智能技术生成
DI依赖注入
自已创建的方式依赖于被调用者对象,工厂模式的方式依赖于工厂
而外部注入方式完全抛开依赖关系,实现自由的外部注入
BeanFactory 是所有基于Spring框架系统的核心,其采用工厂模式实现 IoC
它将系统的配置和依赖关系从代码中独立出来
Application Context 上下文模块
spring真正威力在于如何使用IoC将一个Bean注入到另一个Bean中


减少耦合的一个通常的做法是将具体实现隐藏在接口下面,这样具体实现类的替换不会
影响到引用类
创建系统组件之间关联的动作叫装配


IoC使软件组件松散连接成为可能 ,AOP让你能够捕捉系统中经常使用的功能,把它转化 成组件
不同的IOC方式:接口依赖,设值注入,构造注入
Spring可以是任意类型的POJO简单Java对象


BeanFactory负责创建和分发Bean。
BeanFactory f=new XmlBeanFactory(new FileInputStream("beans.xml"));
Bean只有在被需要的时候才被实例化


ApplicationContext和BeanFactory两者都是
载入Bean定义信息,装配Bean,根据需要分发Bean。
但AC可提供更多的功能
AC接口从BeanFactory接口扩展的


ApplicationContext的实现常用有三种:
ClassPathXmlApplicationContext--从类路径中的XML文件载入
FileSystemXmlApplicationContext--从文件系统中的XML文件
XmlWebApplicationContext--从web系统中的XML文件载入上下文定义信息


应用上下文与Bean工厂的另一个重要区别:关于单实例Bean是如何被载入
Bean工厂延迟载入所有的Bean,直到getBean方法被调用时Bean才被创建
应用上下文会在上下文启动后预载入所有的单实例Bean,通过预载入单实例Bean,确保你在需要它们已准备好


Bean缺省情况下是单实例模式,能得到不同的实例 的是原型模式
<bean>标签的singleton属性告诉上下文这个Bean是不是一个单实例。缺省为true
Bean实例化进的初始化工作,<bean>中的属性init-method
Bean删除时的清理工作,<bean>中的属性destroy-method


Bean的装配:简单类型的装配,复杂类型的装配,List的装配,Map的装配,Set的装配,Properties的装配
<property name="foo"><null/></property>将一个属性设为null


Set注入是一种装配Bean属性的直接方式,但Set注入的缺点是它假设了所有的可变属性都可以
通过set方法访问到。无法清晰的表示出哪些属性是必需,哪些是可选。
构造函数注入法优点在于通过构造函数来强制依赖关系。通过<constructor-arg>
构造函数的参数存在多个时,可通过序号或类型来处理
<bean>
<constructor-arg index="1"><value/></constructor-arg>
<constructor-arg index="0"><ref/></constructor-arg>
</bean>


<bean>
<constructor-arg type="java.lang.String"><value/></constructor-arg>
<constructor-arg type="java.net.URL"><ref/></constructor-arg>
</bean>


自动装配 设置  <bean>的autowire属性
四种类型:byName试图在容器中寻找和需要自动装配的属性名相同的Bean
byType 试图在容器中寻找一个与需要 自动配置的属性类型相同的bean
constructor 试图在容器中查找与需要自动装配的Bean的构造函数参数一致的一个或多个Bean
autodetect 首先尝试使用constructor来自动 装配,后使用byType方式 


通过设置Spring配置文件的根元素<beans>中设置default-autowire,就可以
将所有的Bean设置为自动装配
<beans default-autowire="byName">


AOP术语:
切面Aspect,要实现的交叉功能 
连接点Joinpoint,应用程序执行过程中插入切面的地点。这个地点可以是方法调用,
异常抛出
通知Advice 通知切面的实际实现
切入点Pointcut切入点定义了通知应该应用在哪些连接点
引入Introduction 允许你为已存在的类添加新方法和属性
目标对象Target,是被通知对象
代理Proxy 是将通知应用到目标对象后创建的对象
织入Weaving,是将切面应用到目标对象从而创建一个新的代理对象的过程
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值