spring学习笔记
来源:互联网 发布:方舟生存进化优化了吗 编辑:程序博客网 时间:2024/05/16 14:04
Spring中两个十分重要的概念——IOC/DI & AOP
1.IOC/DI(Inverse of control/Dependence Injection)
IOC:控制反转,看起来比较牛B,说起来十分简单。就是不使用传统的将类的依赖关系用硬编码来维护的方式,而是让容器来管理类之间的依赖,依赖关系在全在一个配置文件上。这样,就将造成耦合的根源——复杂的依赖关系,进行了统一的,集约式管理。
DI:依赖注入,其实就是控制反转。只是比IOC的表达稍微好点,更能望文生意些。依赖注入,简单地说,就是在运行期间,由容器将组件之间的依赖关系注入到组件中。
IOC/DI的作用:有了这样的设计,我们只需要专心编写一个个高内聚的零件,而不用关心这些零件如何组合起来工作。这个问题是由依赖关系的配置文件需要关注的。这样将组件和依赖分离,提高了组件的可重用性。
IoC的配置:
<!-- dao层 -->
<bean id="Hibernate-loginuserDAO" class="com.softeem.dao.hibernate.UserDAO">
<property name="factory" ref="sessionFactory"/>
</bean>
<!-- service层 -->
<bean id="loginService" class="com.softeem.service.LoginService">
<property name="userDAO" ref="Hibernate-loginuserDAO"/>
</bean>
<!-- Action层 -->
<bean id="userAction" class="com.softeem.struts2.UserAction" scope="prototype" >
<property name="loginService">
<ref local="loginService"/>
</property>
</bean>
IoC是面向组件编程的一种编程思想。组件与组件的依赖关系,本来是程序员来管理,现在我们反转给IoC容器完成,我们只需要专心编写一个个组件,而不用关心这些组件如何组合起来工作。
<!-- dao层 --><!-- service层 --><!-- Action层 -->三层体系架构,层次关系一目了然。
2.AOP(Aspect Oriented Programming)
AOP:翻译为面向切面编程。我个人认为,说成是面向动作编程好象更加贴切。因为AOP是将某类动作高度内聚的编程方法。
AOP在Spring中的应用:事务管理机制。spring的事务管理是通过AOP代理实现的。
spring的声明式事务:
spring引人注目的重要因素之一是它全面的事务支持。spring提供了一致的事务管理抽象,为复杂的事务API提供了一致的编程模型,如JTA、JDBC、hibernate、JPA和JDO,并且支持声明式事务。
spring的事务管理分为编程式事务和声明式事务,用得最多的是声明式事务。
声明式事务的配置:
<!-- transaction声明式事务 -->
<tx:advice id="txAdvice" transaction-manager="Hibernate-TxManager">
<tx:attributes>
<tx:method name="check*" read-only="true"/>
<tx:method name="find*" read-only="true"/>
<tx:method name="to*" read-only="true"/>
<tx:method name="*"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="loginuserService" expression="execution(* com.softeem.service.*.*(..))"/>
<aop:advisor pointcut-ref="loginuserService" advice-ref="txAdvice"/>
</aop:config>
声明式事务就是只需在配置文件里面声明就可以使用,通过expression="execution(* com.softeem.service.*.*(..))"表达式通配符来管理哪些类的哪些方法需要使用事务,read-only="true"表示只读,就是不使用事务,默认的是false,使用事务。一般的,查询数据不用事务,其他要使用。
有时候工程跑起来调用了相关DAO的方法,但是hibernate就是没有发出相应的sql语句,往往就是因为事务的管理出错,本来要使用事务的地方没使用,使得事务回滚,这里要注意下。
以上是spring的核心技术,但是spring里面的内容远不止这些,其他的内容有待进一步研究。希望大家看完能有所收获。
- spring gossip(spring 学习笔记)
- spring学习笔记: Spring AOP
- spring学习笔记: Spring Jdbc
- spring学习笔记:spring事务管理
- spring学习笔记:spring事务管理
- spring学习笔记:spring controller
- spring学习笔记:spring事务管理
- Spring 学习笔记:浅谈 Spring
- spring学习笔记: Spring AOP
- Spring学习笔记-Spring容器
- Spring学习笔记 - Spring Data
- Spring学习笔记-Spring Cache
- Spring学习笔记 - Spring Boot
- Spring学习笔记: Spring概述
- Spring 学习笔记
- Spring学习笔记
- Spring AOP学习笔记
- Spring学习笔记(一)
- 写给JAVA初学者
- test
- DB2 HADR v8.2 EE 实施步骤
- Eclipse常用快捷键分类总结
- 铅笔的比喻
- spring学习笔记
- 12条有用的Flex代码
- 使用MySql优化你的PHP程序
- php to xls
- 这几年
- delphi反编
- abstract 能和override 一起使用[C#]
- 进程和线程的限制
- 特殊符号在html中的表示