Spring in Action 基础知识

1. Spring 是为简化企业级应用开发而生的,使用Spring,你可以用简单的JavaBeans来实现那些以前只有EJB才能实现的功能。

核心功能:

(1)轻量级   : 基于Spring应用开发的对象一般不依赖于Spring的类。

(2)依赖注入: Spring提供一种松耦合的技术,称为依赖注入(DI)。对象是被动接受依赖类的而不是主动去找。可以将DI理解为JNDI的反转------对象不是从容器中查找它的依赖类,而是容器在实例化对象的时候主动将它的依赖类注入给它。

Spring框架的核心是DI.

(3)面向切面:Spring对面向切面的编程提供了强大支持,通过将业务逻辑从应用服务(如监控和事务管理)中分离出来,实现了内聚开发。应用对象只做它们该做的---业务逻辑,不负责其系统问题(如日志和事务支持)

(4)容器     :Spring是一个容器,它包含并管理应用对象的生命周期和配置。

(5)框架     :Spring实现了使用简单的组件配置组合成一个复杂的应用。在Spring中,应用中的对象是通过XML文件配置组合的。并且Spring提供了很多基础功能(事务管理、持久层集成),使得开发人员能够专注于开发应用逻辑。

2. <beans></beans>是任何Spring配置文件的根元素。

    <bean>元素用来在Spring容器中定义一个类以及它的配置信息。在<bean>元素中,<property>元素表示设置属性值,使用<property>,我们告诉Spring容器调用bean相应属性的set方法来设置其属性值。

3. DI的关键优点是松耦合。耦合使得代码难以测试,难以重用,难以理解。

使用DI,可以释放应用对象获取其依赖对象的负担,从而可以集中除了自己的任务。

对象无需知道依赖来自何处或依赖的实现方式。

4. 减少耦合的通常做法是将具体的实现隐藏在接口下面,这样具体实现类的替换不会影响到引用类。

5. AOP可以将散开的逻辑集中在一个地方-----切面

6. 不是只有一种Spring容器,Spring提供了多种容器实现,分为两类。

(1)Bean工厂是最简单的容器,提供基础的依赖注入支持。

(2)应用上下文(更高级的容器),建立在Bean工厂基础之上,提供了系统构架服务,如从属性文件读取文本信息

由于应用上下文提供了附加功能,几乎所有的应用系统都选择ApplicationContext。

7.应用上下文和Bean工厂的另一个重要区别是关于单实例Bean是如何被载入的。Bean工厂延迟载入所有的Bean,知道getBean()方法被调用时Bean才被创建。应用上下文会在上下文启动后预载入所有的单实例Bean,确保你需要的时候他们已经准备好了,你的应用不需要等待他们被创建。

8.当属性为集合时

<bean>

<property name="">

<list> <set>和<list>类似,只是<set>保证每个元素唯一。

<ref bean=""/>

<ref bean=""/>

<ref bean=""/>

</list>
</property>

</bean>

 

<bean>

<property name="">

<map> 键-值

<entry key="" value-ref=""/>

<entry key="" value-ref=""/>

<entry key="" value-ref=""/>

</map>
</property>

</bean>

 

<bean>

<property name="">

<props>  String-to-String映射

<prop key="string">string</prop>

<prop key="string">string</prop>

<prop key="string">string</prop>

</props>

</property>

</bean>

9. 自动装配  减少XML配置,Spring自动初始化bean的属性

只要设置需要自动装配的<bean>中的autowire属性

<bean id="" class="" autowire="">  四种装配类型 byName,byType,constructor,autodetect

</bean>

10. Bean范围化:       默认,所有Spring Bean都是单一的。

<bean id="" class="" scope="">  

</bean>

singleton      在spring容器中仅存在一个Bean实例,Bean以单实例的方式存在.

prototype     每次从容器中调用Bean时,都返回一个新的实例

request        这种bean在web的request范围内有效,即每次请求时都会产生一个实例。只用于web程序中。

session        这种bean在web的session范围内有效。只用于web程序中。

global session  这种bean在web的全局session范围内有效。只用于web portlet框架中。

11. 如何不使用公共的构造函数来配置Bean   (如:单实例,没有公共的构造函数时)

<bean id="" class="" factory-method="函数名">  允许指定要调用的静态方法

</bean>

12. 初始化和销毁Bean

<bean id="" class="" init-method="初始化后调用的方法" destroy-method="将Bean删除时要调用的方法">  

</bean>

13.

猜你喜欢

转载自vowtree.iteye.com/blog/1070050