博客统计信息

用户名:daizhemengxiang
文章数:104
评论数:14
访问量:5085
无忧币:523
博客积分:1060
博客等级:5
注册日期:2012-01-31

我最近发表的评论

2012-03-02 11:12:41
视频配套PPT,视频地址【 struts2 注解零配置视频教程 】
1 、关于注解注解放在什么语法单元头上?一个语法单元头上同种注解只能放一个注解中的默认方法名为value每个方法都可以有默认值如果注解中的方法需要一个数组,那么可以用一个单独元素来给定2 、每个包都可以设置 package-info.java ,用于写这个包的注释和注解
java代码:/**
* Action包
*/
@ParentPackage("ssh-default")
package cn.javass.ssh.doc.action;

import org.apache.struts2.convention.annotation.ParentPackage;
导..
类别:未分类|阅读(27)|回复(1)|(1)阅读全文>>
我们在以前学习 Spring 的时候,其所有的配置信息都写在applicationContext.xml 里,大致示例如下:
java代码:<beans>
<bean name="ds" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@localhost:1521:wangbin"/>
<property name="username" value="tech37"/>
<property name="password" value="tech37"/>
</bean>

<bean nam..
类别:未分类|阅读(140)|回复(0)|(0)阅读全文>>
是什么Spring表达式语言全称为“Spring Expression Language”,缩写为“SpEL”,类似于Struts2x中使用的OGNL表达式语言,能在运行时构建复杂表达式、存取对象图属性、对象方法调用等等,并能与Spring功能完美整合。表达式语言给静态Java语言增加了动态功能。SpEL是单独模块,只依赖于core模块,不依赖于其他模块,可单独使用。能干什么表达式语言一般是用较为简单的形式完成主要的工作,减少开发的工作量。SpEL支持如下表达式:一、基本表达式:字面量表达式、关系,逻辑与算数运算表达式、字符串连接及截取表达式、三目运算及Elivis..
类别:未分类|阅读(71)|回复(0)|(0)阅读全文>>
更简单的方式是使用@Transactional1:在配置文件中开启对@Transactional的支持<tx:annotation-driven transaction-manager="txManager"/>2:在类或者方法上配置@Transactional3:@Transactional后面可以跟属性配置,如下:@Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW)默认的@Transactional配置如下:1:事务传播设置是 PROPAGATION_REQUIRED2:事务隔离级别是 ISOLATION_DEFAULT3:事务是 读/写4:事务超时默认是依赖于事务系统的,或者事务超时没有被支持。5:任何 RuntimeException 将触发事务..
类别:未分类|阅读(0)|回复(0)|(0)阅读全文>>
 Spring框架引人注目的重要因素之一是它全面的事务支持。Spring框架提供了一致的事务管理抽象,这带来了以下好处:1:为复杂的事务API提供了一致的编程模型,如JTA、JDBC、Hibernate、JPA和JDO2:支持声明式事务管理3:提供比复杂的事务API(诸如JTA)更简单的、更易于使用的编程式事务管理API4:非常好地整合Spring的各种数据访问抽象Spring事务抽象的关键是事务策略的概念。这个概念由org.springframework.transaction.PlatformTransactionManager接口定义:
java代码:public interface PlatformTransactionManager {
TransactionStatus getTransaction(TransactionDefinition definition)
throws TransactionException;
void commit(TransactionStatus status) throws TransactionException;
void rollback(TransactionStatus status) throws TransactionException;
}
ge
tTransaction(..)方法根据一个类型为 TransactionDefinition 的参数返回一个 TransactionStatus 对象。返回的 TransactionStatus 对象可能代表一个新的或已经存在的事务(如果在当前调用堆栈有一个符合条件的事务。如同J2EE事务环境,一个 TransactionStatus 也是和执行 线程 绑定的)TransactionDefinition接口指定1:事务隔离:当前事务和其它事务的隔离的程度。例如,这个事务能否看到其他事务未提交的写数据?2:事务传播:通常在一个事务中执行的所有代码都会在这个事务中运行。但是,如果一个事务上下文已经存在,有几个选项可以指定一个事务性方法的执行行为:例如,简单地在现有的事务中继续运行(大多数情况);或者挂起现有事务,创建一个新的事务。Spring提供EJB CMT中常见的事务传播选项。3:事务超时: 事务在超时前能运行多久(自动被底层的事务基础设施回滚)。4:只读状态: 只读事务不修改任何数据。只读事务在某些情况下(例如当使用Hibernate时),是一种非常有用的优化。 高层次方案:首选的方法是使用Spring的高层持久化集成API。这种方式不会替换原始的API,而是在内部封装资源创建、复用、清理、事务同步以及异常映射等功能,这样用户的数据访问代码就不必关心这些,而集中精力于自己的持久化逻辑。低层次方案 :在较低层次上,有以下这些类:DataSourceUtils(针对JDBC),SessionFactoryUtils(针对Hibernate),PersistenceManagerFactoryUtils(针对JDO)等等。也就是说,在纯JDBC中,如果你需要使用Spring的事务,那么就需要使用上面的类来管理连接,如下:Connection conn=DataSourceUtils.getConnection(dataSource);当然,一旦你用过Spring的JDBC支持或Hibernate支持,你一般就不再会选择 DataSourceUtils 或是别的辅助类了,因为你会更乐意与Spring抽象一起工作,而不是直接使用相关的API。  Spring框架提供了一致的事务管理抽象,通常实施事务的步骤是:1:定义资源(DataSource/SessionFactory……)2:定义事务管理器(管理资源的事务)3:定义事务通知:定义了如何实施事务(实施事务的方法名和对应的事务属性),需要使用事务管理器管理事务,定义了如何选择目标对象的方法及实施的事务属性4:定义advisor(切入点和事务通知):切入点选择需要实施事务的目标对象(通常是业务逻辑层)5:Spring织入事务通知到目标对象(AOP代理)要使用Spring的事务,首先要先定义一个与数据源连接的DataSource,然后使用Spring的DataSourceTransactionManager,并传入指向DataSource的引用,比如,JDBC的事务配置如下:
java代码:<bean name="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>oracle.jdbc.driver.OracleDriver</value></property>
<property name="url">
<value>jdbc:oracle:thin:@localhost:1521:orcl</value></property>
<property name="username"> <value>test</value> </property>
<property name="password" value="test"/>
</bean>
<bean id="txManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/>
</bean>如果使用JTA,示例如下:
java代码:<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:jee="http://www.springframework.org/schema/jee"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd
">

<jee:jndi-lookup id="dataSource" jndi-name="jdbc/jpetstore"/>
<bean id="txManager" class="org.springframework.transaction.jta.JtaTransactionManager" />
</beans>Hibernate的事务配置,示例如下:1:Spring对Hibernate的集成2:然后配置事务如下:
java代码:<bean id="txManager“
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>可以简单地使用 JtaTransactionManager 来处理Hibernate事务和JTA事务,就像我们处理JDBC,或者任何其它的资源策略一样,如下:
java代码:<bean id="txManager"
class="org.springframework.transaction.jta.JtaTransactionManager"/>注意任何资源的JTA配置都是这样的,因为它们都是全局事务,可以支持任何事务性资源。在所有这些情况下,应用程序代码根本不需要做任何改动。仅仅通过改变配置就可以改变事务管理方式,即使这些更改是在局部事务和全局事务间切换。Spring的声明式事务管理是通过AOP实现的,Xml风格的声明式事务配置如下:
java代码:<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="get*" read-only="true"/>
<tx:method name="*"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="myPointCut" expression="execution(* cn.javass.spring3.jdbc.Impl.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="myPointCut"/>
</aop:config>
<bean name="api" class="cn.javass.spring3.jdbc.Impl">
<property name="ds" ref="dataSource"></property>
</bean>
<bean name="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>oracle.jdbc.driver.OracleDriver</value>
</property>
<property name="url">
<value>jdbc:oracle:thin:@localhost:1521:orcl</value>
</property>
<property name="username"> <value>ztb</value> </property>
<property name="password" value="ztb"/>
</bean>
</beans> 事务回滚:可以在配置中指定需要回滚的Exception,如下:
java代码:<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="get*" read-only="false"
rollback-for="NoProductInStockException"/>
<tx:method name="*"/>
</tx:attributes>
</tx:advice><tx:advice/> 有关的设置,默认的 <tx:advice/> 设置如下:1:事务传播设置是 REQUIRED2:隔离级别是 DEFAULT3:事务是 读/写4:事务超时默认是依赖于事务系统的,或者事务超时没有被支持。5:任何 RuntimeException 将触发事务回滚,但是任何 checked Exception 将不触发事务回滚 
类别:未分类|阅读(3)|回复(0)|(0)阅读全文>>
简介Spring提供的DAO(数据访问对象)支持主要的目的是便于以标准的方式使用不同的数据访问技术,如JDBC,Hibernate或者JDO等。它不仅可以让你方便地在这些持久化技术间切换, 而且让你在编码的时候不用考虑处理各种技术中特定的异常。一致的异常层次Spring提供了一种方便的方法,把特定于某种技术的异常,如SQLException, 转化为自己的异常,这种异常属于以 DataAccessException 为根的异常层次。这些异常封装了原始异常对象,这样就不会有丢失任何错误信息的风险。如果使用拦截器方式,你在应用中 就得自己小心处理Hibernat..
类别:未分类|阅读(0)|回复(0)|(0)阅读全文>>
启用@AspectJ支持通过在你的Spring的配置中引入下列元素来启用Spring对@AspectJ的支持:<aop:aspectj-autoproxy/>声明一个方面在application context中定义的任意带有一个@Aspect切面(拥有@Aspect注解)的bean都将被Spring自动识别并用于配置在Spring AOP。配置如:
java代码:<bean id="myAspect" class="org.xyz.NotVeryUsefulAspect">
<!-- configure properties of aspect here as normal -->
</bean>
Java类:
@Aspect
public class NotVeryUsefulAspect {
}声明一个切入点(pointcut)使用 @P..
类别:未分类|阅读(53)|回复(0)|(0)阅读全文>>
AOP是什么(Aspect   Oriented   Programming)AOP是一种编程范式,提供从另一个角度来考虑程序结构以完善面向对象编程(OOP)。AOP为开发者提供了一种描述横切关注点的机制,并能够自动将横切关注点织入到面向对象的软件系统中,从而实现了横切关注点的模块化。 AOP能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任,例如事务处理、日志管理、权限控制等,封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可操作性和可维护性。AOP能干什么,也是AOP带来的好处1:降低模块的耦..
类别:未分类|阅读(113)|回复(0)|(0)阅读全文>>
通过<list/>、<set/>、<map/>及<props/>元素可以定义和设置与Java Collection类型对应List、Set、Map及Properties的值 ,示例如下:
java代码:<bean id="moreComplexObject" class="example.ComplexObject">
<property name="adminEmails">
<props>
<prop key="administrator">admin@somecompany.org</prop>
<prop key="support">support@somecompany.org</prop>
</props>
</property>
<property name="someList">
<list>
<v..
类别:未分类|阅读(11)|回复(0)|(0)阅读全文>>
IoC——Inversion of Control,控制反转在Java开发中,IoC意味着将你设计好的类交给系统去控制,而不是在你的类内部控制。IoC是一种让服务消费者不直接依赖于服务提供者的组件设计方式,是一种减少类与类之间依赖的设计原则。 DI——Dependency Injection(依赖注入)即组件之间的依赖关系由容器在运行期决定,形象的来说,即由容器动态的将某种依赖关系注入到组件之中。依赖注入的目标并非为软件系统带来更多的功能,而是为了提升组件重用的概率,并为系统搭建一个灵活、可扩展的平台。通过依赖注入机制,我们只需要通过简单的配..
类别:未分类|阅读(11)|回复(0)|(0)阅读全文>>
 <<   1   2   3   4   5   >>   页数 ( 1/11 )

订阅我的博客


google reader 鲜果 QQ邮箱 有道 抓虾

我的技术圈(0)

更多>>