首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
编程语言
> 详细
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
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
Spring Cloud 从入门到精通(一)Nacos 服务中心初探
2021-07-29
基础的排序算法
2021-07-29
SpringBoot|常用配置介绍
2021-07-29
关于 .NET 与 JAVA 在 JIT 编译上的一些差异
2021-07-29
C语言常用函数-toupper()将字符转换为大写英文字母函数
2021-07-29
《手把手教你》系列技巧篇(十)-java+ selenium自动化测试-元素定位大法之By class name(详细教程)
2021-07-28
4-1 YAML配置文件 注入 JavaBean中
2021-07-28
【python】 用来将对象持久化的 pickle 模块
2021-07-28
马拉车算法
2021-07-28
用Python进行冒泡排序
2021-07-28
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!