gboat2.base.dao.aspect
类 GboatSessionFactoryAspect
java.lang.Object
gboat2.base.dao.aspect.GboatSessionFactoryAspect
- 所有已实现的接口:
- org.springframework.beans.factory.InitializingBean
public class GboatSessionFactoryAspect
- extends Object
- implements org.springframework.beans.factory.InitializingBean
实现 SessionFactory 动态切换的切面,该切面执行 SessionFactory 切换的规则:
- 如果目标实例的类型或方法(全限定名)配置了指定的 SessionFactory,则直接切换,如下面的配置示例中的
glodon.gbp.xxx.service.TestServiceImpl,在执行此类的所有方法时都会使用 mysqlSessionFactory
- 方法参数中包含 Class 类型参数,且该 Class 的名称匹配 targetSessionFactorys 中的任一规则
- 方法参数中包含 Map 类型参数,且该 Map 中 key 为
QuerySupport.PARAM_TABLENAME
的值匹配 targetSessionFactorys 中的任一规则
- 方法有且只有一个参数,且参数对象的 getClass() 方法得到的 Class 满足上面的第 2 点
- 不满足上述任意切换 SessionFactory的条件时,将清除 SessionFactory切换设置,直接使用默认 SessionFactory
要启用该切面,需在 Spring 配置文件中新增如下配置(配置示例):
<-- 声明切面实例 -->
<bean id="gboatSessionFactoryAspect" class="gboat2.base.dao.aspect.GboatSessionFactoryAspect">
<property name="targetSessionFactorys">
<!-- SessionFactory 与类名的映射关系,默认 SessionFactory不用配置 -->
<map key-type="java.lang.String">
<!-- 默认数据源的对应的 SessionFactory 不用在此处配置 --/>
<entry key="glodon\.gbp\.enterprise\.model\..*" value-ref="gfmSessionFactory" />
</map>
</property>
</bean>
<-- 配置切面的拦截规则 -->
<aop:config>
<aop:pointcut id="gboatSessionFactoryPointcut" expression="execution(* gboat2.base.core.dao.IBaseDAO+.*(..))" />
<aop:aspect ref="gboatSessionFactoryAspect" order="1" >
<aop:before method="dynamicSetSessionFactory" pointcut-ref="gboatSessionFactoryPointcut"/>
</aop:aspect>
</aop:config>
- 从以下版本开始:
- 3.0
- 作者:
- 何明旺
- 另请参见:
gboat2.base.dao.impl.GboatSessionFactoryBean
,
gboat2.base.dao.GboatTransactionManager
从类 java.lang.Object 继承的方法 |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
GboatSessionFactoryAspect
public GboatSessionFactoryAspect()
dynamicSetSessionFactory
public void dynamicSetSessionFactory(org.aspectj.lang.JoinPoint joinPoint)
throws Exception
- 抛出:
Exception
validateVo
public void validateVo(Class<?> voClass)
- 检查 vo 对象所关联的所有 po 是否均属于同一个 SessionFactory 管理,如果不是,则抛出
org.springframework.jdbc.CannotGetJdbcConnectionException.CannotGetJdbcConnectionException
异常
- 参数:
voClass
- VO 对象的类定义。如果为 null 或没有被
@gboat2.base.core.dao.annotation.Relations 注解,此方法将直接返回
getTargetSessionFactorys
public Map<String,org.hibernate.SessionFactory> getTargetSessionFactorys()
setTargetSessionFactorys
public void setTargetSessionFactorys(Map<String,org.hibernate.SessionFactory> targetSessionFactorys)
afterPropertiesSet
public void afterPropertiesSet()
throws Exception
- 指定者:
- 接口
org.springframework.beans.factory.InitializingBean
中的 afterPropertiesSet
- 抛出:
Exception
Copyright © 2014 广联达软件股份有限公司(Glodon Software Co., Ltd.). All rights reserved.