传智播客java学习--Spring初步

本文介绍了Spring框架的基础概念,包括反向控制(IOC)原理、Bean的生命周期管理、Bean工厂与应用上下文的区别,并探讨了AOP的基本术语及其运作机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我今天学习了徐老师讲的Spring知识,我做了简单的笔记:

 

反向控制(IOC)

       bean工厂:最简单的容器,提供了基础的依赖注入支持。创建各种类型的Bean.

应用上下文:建立在bean工厂基础之上,提供系统架构服务。

 

ClassPathXmlApplicationContext:从类路径中加载。

FileSystemXmlApplicationContext:从文件系统加载。

XmlWebApplicationContext:从web系统中加载。

 

应用上下文与bean 工厂的区别:

       bean工厂延迟加载所有bean,直到getBean()方法被调用。

应用上下文会在启动后预载入所有单例bean.这样可确保应用不需要等待他们被创建。

 

bean 的生命周期

bean被载入到容器中时,他的生命周期就开始了。bean工厂在一个bean可以使用前完成很多工作:

1.容器寻找bean的定义信息并实例化。

2.使用依赖注入,spring按bean定义信息配置bean的所有属性。

3.若bean实现了BeanNameAware接口,工厂调用Bean的setBeanName

  ()方法传递bean的ID。

4.若bean实现了BeanFactoryAware接口,工厂调用setBeanFactory()

   方法传入工厂自身。

5.若BeanPostProcessor和bean关联,则它们的

   postProcessBeforeInitialization()方法被调用。

6.若bean指定了ini-method方法、,它将被调用。

7.最后,若有BeanPostProcessor和bean关联,则它们的

   postProcessAfterInitialization()方法被调用、。

 

       将bean从工厂中删掉有两种方法:

1.若bean实现了DisposableBean接口,

       distroy()方法被调用。

2.如果指定了定制的销毁方法,就调用这个方法。

bean在应用上下文中的生命周期和在bean工厂

的生命周期唯一不同的是:若bean实现了

ApplicationContextAware()接口,

setApplicationContext()方法会被调用。

 

对bean 工厂进行后处理:

BeanPostProcessor在bean载入后,对bean进行一些后处理工作。而BeanFactoryPostProcessor在bean工厂载入所有bean的定义后,实例化bean之前,对Bean工厂做一些后处理工作。

     public interface BeanFactoryPostProcessor{

         public void postProcessorBeanFactory(…);

    }

如果使用的是应用上下文不需要将他注册为Bean工厂后处理器。上下文会自动注册它。按照正常的Bean声明即可。

 

定制属性编辑器:

       class PhoneEditor extends java.beans.PropertyEditorSupport

在xml文件里面配置编辑器:

<bean class="..CustomEditorConfigurer">

    <property name="customEditors">

      <map>

        <entry key="Phone">

            <bean id="phoneEditor" class="PhoneEditor"/>

        </entry>

      </map>

    </property>

   </bean>

   <bean id="contact" class="Contact">

        <property name=phoneNumber value="888-555-1212" />

   </bean>

 

感知其他bean

       运行在spring容器中的bean不知道自己的注册名,运行在哪里。实现以下三个接口:

      BeanNameAware:知道自己的名字。

      BeanFactoryAware:所处的bean工厂。

      ApplicationContextAware:所在上下文

 

Spring 的AOP

AOP 术语

  1.切面(aspect):要实现的交叉功能,是系统模块化的一个切面或领域。如日志记录。

2.连接点:应用程序执行过程中插入切面的地点,可以是方法调用,异常抛出,或者要修改的字段。

  3.通知:切面的实际实现,他通知系统新的行为。如在日志通知包含了实现日志功能的代码,如向日志文件写日志。通知在连接点插入到应用系统中。

  4.切入点:定义了通知应该应用在哪些连接点,通知可以应用到AOP框架支持的任何连接点。

  5.引入:为类添加新方法和属性。

  6.目标对象:被通知的对象。既可以是你编写的类也可以是第三方类。

  7.代理:将通知应用到目标对象后创建的对象,应用系统的其他部分不用为了支持代理对象而改变。

8.织入:将切面应用到目标对象从而创建一个新代理对象的过程。织入发生在目标对象生命周期的多个点上:

            编译期:切面在目标对象编译时织入.这需要一个特殊的编译器.

            类装载期:切面在目标对象被载入JVM时织入.这需要一个特殊的类载入器.

            运行期:切面在应用系统运行时织入.

 

今天学的知识就是这些了,希望明天有更好的状态学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值