Spring的bean容器

开始学习Spring(一上手要建立一个jdbctempalte有一点难)--->所以先学Spring打一下基础(以前了解过不熟悉)

开始-------->Spring

Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。

Spring框架包含许多特性,并被很好地组织在下图所示的六个模块中


v2-2d5cb3e0a86a42b82ccce4c30eda6cf6_b.jpg



1.Core 封装包是框架的最基础部分,提供IoC和依赖注入特性

2.Context(上下文) 封装包构筑于Core封装包的坚固基础上:它提供了用一种框架风格的方式来访问对象,有些像JNDI注册表。

3.DAO 提供了JDBC的抽象层,它可消除冗长的JDBC编码和解析数据库厂商特有的错误代码。

4.ORM 封装包提供了常用的“对象/关系”映射APIs的集成层。

5.Spring的 AOP 封装包提供了符合 AOP Alliance规范的面向方面的编程(aspect-oriented programming)实现,让你可以定义,例如方法拦截器(method-interceptors)和切点(pointcuts),从逻辑上讲,从而减弱代码的功能耦合,清晰的被分离开。

6.Spring中的 MVC 封装包提供了Web应用的Model-View-Controller(MVC)实现。


在我的了解中就是

IoC(控制反转)容器和AOP面向切面的编程(主要是解耦)

1.IOC控制反转(Inversion of Control,控制倒转)

IoC 不是一种技术,只是一种思想,一个重要的面向对象编程的法则,它能指导我们如何设计出松耦合、更优良的程序。传统应用程序都是由我们在类内部主动创建依赖对象,从而导致类与类之间高耦合,难于测试;有了IoC容器后,把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,所以对象与对象之间是 松散耦合,这样也方便测试,利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活。

针对IOC容器负责容纳此前所描述的bean,并对bean进行管理

在Spring中,BeanFactory是IoC容器的核心接口。 它的职责包括:实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。

XmlBeanFactory类将获取此XML配 置元数据,并用它来构建一个完全可配置的系统或应用。


v2-4dd849eeda32c967416e5f399ada6a8d_b.jpg


下面的XML的配置元素的基本 配置

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="springframework.org/sch" xmlns:xsi="w3.org/2001/XMLSchema-i" xsi:schemaLocation="springframework.org/sch springframework.org/sch">

<bean id="..." class="...">

<!-- collaborators and configuration for this bean go here -->

</bean> <bean id="..." class="...">

<!-- collaborators and configuration for this bean go here -->

</bean> <!-- more bean definitions go here -->

</beans>


实例化

ApplicationContext context = new ClassPathXmlApplicationContext( new String[] {"services.xml", "daos.xml"});

// an ApplicationContext is also a BeanFactory

(via inheritance) BeanFactory factory = context;


XML配置元数据的结构

XML的文件可以会被拆分

<beans> <import resource="services.xml"/>

<import resource="resources/messageSource.xml"/>

<import resource="/resources/themeSource.xml"/>

<bean id="bean1" class="..."/>

<bean id="bean2" class="..."/>

</beans>

就有可能分成几个XML的文件

里面可能会有其他的不同的bean

  • bean行为的定义,这些定义将决定bean在容器中的行为(作用域、生命周期回调等等)
  • 对其他bean的引用,这些引用bean也可以称之为协作bean(collaborators)依赖bean(dependencies).
  • 创建bean实例时的其他配置设置。比如使用bean来定义连接池,可以通过属性或者构 造参数指定连接数,以及连接池大小限制等


v2-6c3243077ddd3075ad3f09551385a536_b.jpg


关于一些的bean的属性


v2-ba7a7563d69e994e2bff108cf0758b7f_b.jpg


构造器的实例化

Spring对class并没有特殊的要求, 我们通常使用的class都适用。也就是说,被创建的类并不需要实现任何特定的 接口,或以特定的方式编码,只要指定bean的class属性即可。不过根据所采用 的IoC类型,class可能需要一个默认的空构造器。

<bean id="exampleBean" class="examples.ExampleBean"/>

<bean name="anotherExample" class="examples.ExampleBeanTwo"/>


v2-774dac3dc21de17fe842674d7e16a278_b.jpg


用静态工厂方法实例化

静态工厂方法创建bean时,除了需要指定class 属性外,还需要通过factory-method属性来指定创建bean实例 的工厂方法。

<bean id="exampleBean" class="examples.ExampleBean2" factory-method="createInstance"/>

工厂的构造方法或更好地解耦

实例工厂方法实例化

用来进行实例化的非静态实例工厂方法位 于另外一个bean中,容器将调用该bean的工厂方法来创建一个新的bean实例。为使 用此机制,class属性必须为空,而factory-bean 属性必须指定为当前(或其祖先)容器中包含工厂方法的bean的名称,而该 工厂bean的工厂方法本身必须通过factory-method属性来设定。

<!-- the factory bean, which contains a method called createInstance() -->

<bean id="serviceLocator" class="com.foo.DefaultServiceLocator">

<!-- inject any dependencies required by this locator bean -->

</bean> <!-- the bean to be created via the factory bean -->

<bean id="exampleBean" factory-bean="serviceLocator" factory-method="createInstance"/>

容器的使用

Resource res = new FileSystemResource("beans.xml"); BeanFactory factory = new XmlBeanFactory(res);


v2-d9c7270b74c4b3d536638867cea2b67f_b.jpg


对Spring的bean容器的了解------------->

今天完成的任务:

主要是IOC的bean容器的了解,XML里面bean有哪些组成,怎么配置bean ,还有实例化,怎么调用bean,构造器,还有工厂的怎么实例化,bean容器的使用,以前了解的时候不是很清楚,现在回过来看,知识点要清楚一些,后面用到的时候,我在来加深一些印象

因为在观察那个任务17的时候,开始要jdbctemplate,我就查了资料,主要是要的知识背景多,我就先弄最主要的Spring的基础知识,熟悉后面的才好完成,17有一点难,预计多花点时间完成

明天的任务:我还是计划完成IOC里面的依赖注入,我先把那个spring的基础知识准备一下,后面的jdbctemplate完成可能会理解的更深入一些

今天的困难: 就是刚刚开始我看这个jdbctemplate 我没有思路,后面就先学Spring慢慢的了解多一点,后面才学到jdbctemplate 的操作,开始不能跳过,不然后面的学习起来比较恼火.

就是想请师兄给我具体的讲一下,Spring 我改从哪里下手,才能针对jdbctemplate ,才能更好地完成任务上面的点,后面的知识也联系得上,我在这里开始就有点迷茫,不知道怎么入手,今天感觉学习的日报学的不好,没有那种目标明确的感觉,请师兄给我讲解一下(主要学习的迷惑)

收获:今天我对自己学习的有点不满意,但是收获就是学习IOC的bean容器的相关知识,还有在里面怎么实例化的bean还有工厂的实例化,以前有用到工厂的思想,但是不是很明白,在哪里创建,有的时候看视频里面提了一下,也不是很明白,基本上对bean的了解更深入了.


今天的感觉有点迷糊,说明自己在Spring这块知识还不够,----->请师兄详细的讲解,该怎么学习这个.(坚持不懈---:>)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring bean 容器的生命周期可以分为三个阶段:实例化、初始化和销毁。 1. 实例化阶段:在这个阶段,Spring 容器会根据配置信息创建 bean 的实例。根据配置的不同,Spring 可以通过构造函数实例化 bean,也可以通过工厂方法来创建实例。在这个阶段,Spring 只是创建了对象的实例,并没有进行属性注入或其他初始化操作。 2. 初始化阶段:在实例化后,Spring 容器会对 bean 进行初始化。这个阶段包括以下几个步骤: - 属性注入:Spring 容器会将配置的属性值注入到 bean 的属性中,可以通过 XML 配置或注解来完成属性注入。 - Aware 接口回调:如果 bean 实现了 Aware 接口,容器会调用相应的回调方法,让 bean 对容器的一些特定情况做出响应。 - 自定义初始化方法:如果在配置中指定了自定义的初始化方法,Spring 容器会调用该方法进行额外的初始化操作。 3. 销毁阶段:当 Spring 容器关闭时,会触发 bean 的销毁操作。销毁阶段包括以下几个步骤: - 实现 DisposableBean 接口:如果 bean 实现了 DisposableBean 接口,容器会调用其 destroy() 方法进行销毁操作。 - 自定义销毁方法:如果在配置中指定了自定义的销毁方法,Spring 容器会调用该方法进行额外的销毁操作。 需要注意的是,对于单例作用域的 bean,默认情况下 Spring 容器会管理其完整的生命周期,而对于原型作用域的 bean,Spring 容器只负责创建和初始化,不会进行销毁操作,需要手动释放资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值