您的位置:首页 > 理论基础 > 计算机网络

Spring 知识点整理(整理自网络)

2014-06-30 14:20 567 查看

1 Spring

1.1 原理

1.1.1 IOC

概念:控制权由对象本身转向容器;由容器根据配置文件去创建实例并创建各个实例之间的依赖关系

核心:bean工厂;在Spring中,bean工厂创建的各个实例称作bean

1.1.2 AOP

AOP的主要原理:动态代理

提示:

1. 静态代理:

针对每个具体类分别编写代理类;

针对一个接口编写一个代理类;

2. 动态代理:

针对一个方面编写一个InvocationHandler,然后借用JDK反射包中的Proxy类为各种接口动态生成相应的代理类

1.2 spring的7个模块

1. spring核心容器(Core)

2. spring上下文

3. springAOP

4. SpringDAO

5. SpringORM

6. springWeb支持struts集成

7. springMVC自带的mvc框架

1.3 spring的依赖注入(反射)

1. 接口注入

2. 构造注入

3. Setter注入

1.4 Spring实例化bean的三种方式

1. 默认使用类加载器

2. 使用静态工厂方法实例化bean对象

<bean id="名称" class="工厂类"factory-method="工厂类中创建bean实例的方法"/>


3. 使用实例工厂方法实例化bena对象

<bean id="实例工厂名称"class="工厂类的路径"/>
<bean id="名称"  factory-bean="实例工厂名称"method="实例工厂里边的创建bena对象的方法"/>


1.5 Spring管理的bean的作用域

1. Spring生成的bean默认为单实例。singleton。

2. 如果需要每次调用Spring的getBean方法就创建一个 bean的实例,可指定bean的属性scope="prototype"

3. request、session、globalsession 这3个一般基于web的spring ApplicationContext情形下有效。

1.6 Spring的手工装配和自动装配

1.6.1 手工装配

手动的将bean中所关联的其他bean装配进去

<bean id="storeService"class="service.StoreServiceImpl">
<propertyname="orderDao" ref="orderDao"/>
</bean>


1.6.2 自动装配

使用autowire关键字声明bean的自动装配方式。其可选值为byName、byType、constructor

<bean class="dao.OrderDaoImpl"autowire="byName"></bean>


1.7 Spring的Bean生命周期

1. 当作用域范围为singleton时,在初始化Spring容易的时候实例化bean实例。

如果lazy-init的值为true,则为延迟bean的实例化,即在Spring容器启动时不实例化bean的对象

2. 当作用域范围为prototype时,在调用Spring的getBean的方法时实例化bean对象

1.8 Spring声明式事务

<bean name="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>

<tx:advice id="defaultTxAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="remove*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception" no-rollback-for="java.lang.RuntimeException" />
<tx:method name="add*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.RuntimeException" />
<tx:method name="modify*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception" />
<tx:method name="find*" propagation="SUPPORTS" />
<tx:method name="get*" propagation="SUPPORTS" />
<tx:method name="select*" propagation="SUPPORTS" />
</tx:attributes>
</tx:advice>

<aop:config>
<aop:pointcut id="pc" expression="execution(public * com.js.free.oa.service.*.*(..))" /><!--把事务控制在Service层-->
<aop:advisor pointcut-ref="pc" advice-ref="defaultTxAdvice" />
</aop:config>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: