码迷,mamicode.com
首页 > 编程语言 > 详细

spring aop的cglib代理

时间:2015-05-11 11:04:29      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:

<?xml version="1.0" encoding="UTF-8"?> 
<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-2.5.xsd 
             http://www.springframework.org/schema/tx 
             http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"><!-- 开启事务的注解必须加上 xmlns:tx="http://www.springframework.org/schema/tx"  --> 
           <!-- 开启注解处理器 --> 
          <context:annotation-config /> 
          <context:component-scan base-package="com.niit"> 
          </context:component-scan> 
          
        
        <aop:aspectj-autoproxy proxy-target-class="false"></aop:aspectj-autoproxy> 
        
    <!--<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" /> 
<property name="url" value="jdbc:oracle:thin:@192.168.1.2:1521:yldev" /> 
<property name="username" value="ylnews" /> 
<property name="password" value="ylnews" /> 
    </bean>--> 
    
    <!-- JDBC参数配置 --> 
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" > 
  <property name="locations"> 
<list> 
<value>classpath:/jdbc.properties</value> 
</list> 
</property> 
</bean> 

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driver}" /> 
<property name="url" value="${jdbc.url}" /> 
<property name="username" value="${jdbc.username}" /> 
<property name="password" value="${jdbc.password}" /> 
    </bean> 
    
<!--<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 如果要用hibernate注解 class改为org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean 
    <property name="dataSource" ref="dataSource" /> 
    <property name="mappingResources" > 
        <list> 
        <value>product.hbm.xml</value> 
        </list> 
        </property>  
    <property name="hibernateProperties"> 
   <value> 
hibernate.dialect=${hibernate.dialect} 
hibernate.show_sql=${hibernate.show_sql} 
hibernate.format_sql=${hibernate.format_sql} 
hibernate.cache.use_second_level_cache=false 
hibernate.cache.provider_class=org.hibernate.cache.OSCacheProvider 
hibernate.cache.use_query_cache=false 
hibernate.jdbc.fetch_size=50 
hibernate.jdbc.batch_size=30 
</value> 
</property>  
    </bean> --> 
    
    
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"><!-- 如果要用hibernate注解 class改为org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean --> 
    <property name="dataSource" ref="dataSource" /> 
    <!--<property name="annotatedClasses">   指定注解方式的实体类 
<list> 
<value>com.niit.entity.Accessory</value> 
</list> 
</property> --> 
<property name="packagesToScan">   <!-- 扫描注解方式的实体类 --> 
<list> 
<value>com.niit.entity</value> 
</list> 
</property> 
  <!--   <property name="mappingResources" > 
        <list> 
        <value>product.hbm.xml</value> 
        </list> 
        </property>   --> 
    <property name="hibernateProperties"> 
    <!--<props>    另一种写法 
        <prop key="hibernate.dialect"> 
         org.hibernate.dialect.OracleDialect 
        </prop> 
        <prop key="hibernate.show_sql"> 
         true 
        </prop> 
      </props> --> 
<value> 
<!-- 设置数据库方言 --> 
hibernate.dialect=${hibernate.dialect} 
<!-- 输出SQL语句到控制台 --> 
hibernate.show_sql=${hibernate.show_sql} 
<!-- 格式化输出到控制台的SQL语句 --> 
hibernate.format_sql=${hibernate.format_sql} 
<!-- 是否开启二级缓存 --> 
hibernate.cache.use_second_level_cache=false 
<!-- 配置二级缓存产品 --> 
hibernate.cache.provider_class=org.hibernate.cache.OSCacheProvider 
<!-- 是否开启查询缓存 --> 
hibernate.cache.use_query_cache=false 
<!-- 数据库批量查询数 --> 
hibernate.jdbc.fetch_size=50 
<!-- 数据库批量更新数 --> 
hibernate.jdbc.batch_size=30 
<!--hibernate.current_session_context_class=thread--><!-- 配置事务后就不需要这行,否则需要这行 --> 
</value> 
</property>  
    </bean> 
  
    <!-- 配置事务管理器 就是指定义一个切面类--> 
    <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
<property name="sessionFactory" ref="sessionFactory" /><!-- 注入sessionFactory 通过数据库的连接来管理事务并且还需要知道hibernate的一些配置 --> 
</bean> 

<!-- 使用注解方式定义事务 有了这行@Transactional才能起作用--> 
    <tx:annotation-driven transaction-manager="txManager"/> 
    
    <!-- 配置事务传播特性 --> 
<tx:advice id="txAdvice" transaction-manager="txManager"> 
<tx:attributes> 
<tx:method name="save*" propagation="REQUIRED" /><!-- 默认就是REQUIRED --> 
<tx:method name="delete*" propagation="REQUIRED" /> 
<tx:method name="update*" propagation="REQUIRED" /> 
<tx:method name="get*" read-only="true" /> 
<tx:method name="load*" read-only="true" /> 
<tx:method name="find*" read-only="true" /> 
<tx:method name="*" read-only="true" /><!-- 指上面之外的方法用这个 --> 
</tx:attributes> 
</tx:advice> 

  <!-- 配置哪些类的哪些方法参与事务 --> 
<aop:config> 
    <aop:pointcut id="business" expression="execution(* com.niit.datasource..*.*(..))"/><!-- 匹配com.niit.datasource包及其子包所有类的所有方法 --> 
<aop:advisor pointcut-ref="business" advice-ref="txAdvice" /> 
</aop:config> 

<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"> 
<property name="sessionFactory" ref="sessionFactory"></property> 
</bean> 

<bean id="hibernateDaoSupportDAO" class="com.niit.datasource.HibernateDaoSupportDAO"> 
<property name="sessionFactory" ref="sessionFactory"></property> 
</bean> 
</beans> 

com.niit.entity.Accessory: 
package com.niit.entity; 

import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.Id; 

@Entity 
public class Accessory { 
   private String aid; 
   private String uploadfilename; 
   private String uploadcontenttype; 
   private String uploadrealname; 
   private String news; 
   @Id 
   @GeneratedValue 
public String getAid() { 
return aid; 

public void setAid(String aid) { 
this.aid = aid; 

public String getUploadfilename() { 
return uploadfilename; 

public void setUploadfilename(String uploadfilename) { 
this.uploadfilename = uploadfilename; 

public String getUploadcontenttype() { 
return uploadcontenttype; 

public void setUploadcontenttype(String uploadcontenttype) { 
this.uploadcontenttype = uploadcontenttype; 

public String getUploadrealname() { 
return uploadrealname; 

public void setUploadrealname(String uploadrealname) { 
this.uploadrealname = uploadrealname; 

public String getNews() { 
return news; 

public void setNews(String news) { 
this.news = news; 

   


com.niit.datasource.HibernateDaoSupportDAO2: 

package com.niit.datasource; 

import javax.annotation.Resource; 

import org.hibernate.SessionFactory; 
import org.springframework.orm.hibernate3.support.HibernateDaoSupport; 
import org.springframework.stereotype.Component; 

import com.niit.entity.Accessory; 
@Component 
public class HibernateDaoSupportDAO2 extends HibernateDaoSupport { 
  @Resource(name="sessionFactory") 
public void setSuperSessionFactory(SessionFactory sessionFactory){ 
   super.setSessionFactory(sessionFactory); 
   } 
  public void save2(){ 
Accessory accessory = new Accessory(); 
accessory.setNews("2"); 
accessory.setUploadcontenttype("2"); 
accessory.setUploadfilename("3"); 
accessory.setUploadrealname("2"); 
this.getHibernateTemplate().save(accessory); 



com.niit.SpringDemo: 

package com.niit; 

import java.util.Iterator; 
import java.util.List; 
import java.util.Map; 
import java.util.Set; 



import org.junit.Test; 
import org.springframework.aop.support.AopUtils; 
import org.springframework.context.ApplicationContext; 
import org.springframework.context.support.ClassPathXmlApplicationContext; 



import com.niit.datasource.Dao; 
import com.niit.datasource.HibernateDaoSupportDAO; 
import com.niit.datasource.HibernateDaoSupportDAO2; 
import com.niit.datasource.HibernateDaoSupportInterface; 
import com.niit.service.HelloDao; 
import com.niit.service.HelloService; 
import com.niit.service.MyService; 


public class SpringDemo { 

/** 
* @param args 
*/ 
@Test 
public static void main(String[] args) { 
ClassPathXmlApplicationContext cpxac = new ClassPathXmlApplicationContext("DataSource.xml"); 
HibernateDaoSupportDAO2 hibernateDaoSupportDAO2 = (HibernateDaoSupportDAO2)cpxac.getBean("hibernateDaoSupportDAO2");//这里用的是cglib代理不需要接口 
hibernateDaoSupportDAO2.save2(); 
System.out.println(AopUtils.isCglibProxy(hibernateDaoSupportDAO2)); 
System.out.println(AopUtils.isJdkDynamicProxy(hibernateDaoSupportDAO2)); 


spring aop的cglib代理

标签:

原文地址:http://my.oschina.net/u/2273085/blog/413151

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!