spring 의 사무 설정 약 담
<beans>
<!-- Transaction manager for a single Hibernate SessionFactory (alternative to JTA) -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
<bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property name="transactionManager" ref="transactionManager"/>
<property name="transactionAttributeSource">
<value>
com.skyon.user.manager.UserManager.*=PROPAGATION_REQUIRED
#Add new defines here ->
</value>
</property>
</bean>
<bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator">
<property name="interceptorNames">
<list>
<value>transactionInterceptor</value>
<!--
Interceptor
-->
</list>
</property>
</bean>
<bean class="org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor">
<property name="transactionInterceptor" ref="transactionInterceptor"/>
</bean>
</beans>
여기 서 Default Advisor AutoProxy Creator 를 이용 하여 용기 에 있 는 모든 bean 에 대한 자동 대 리 를 실현 합 니 다. 업무 가 필요 한 업무 bean 을 추가 할 때 transaction Interceptor 에 한 줄 만 추가 하면 됩 니 다. 다른 interceptor 를 추가 하 는 것 도 매우 편리 하고 설정 량 을 크게 줄 일 수 있 습 니 다.
com.skyon.user.manager.UserManager.*=PROPAGATION_REQUIRED 는 인터페이스 위 에 위치 시 킬 수 있 습 니 다: com. skyon. user. manager. TransactionAware. * = PROPAGATIONREQUIRED
그러면 TransactionAware 인터페이스 만 실현 하면 용기 사무 관 리 를 받 을 수 있다.
-----------------------------------------------------------------------------------------------------------------
댓 글
제 가 완전 하 게 보충 하 겠 습 니 다. 잘못된 점 이 있 으 면 지적 해 주세요.
Spring 을 설정 하고 Service 층 의 bean 에 대해 사무 처 리 를 합 니 다. 예전 의 방법 은 다음 과 같 습 니 다.
<bean id="txProxyTemplate" abstract="true"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
ref bean="transactionManager"/>
</property>
<property name="transactionAttributes">
<props>
<prop key="find*">PROPAGATION_REQUIRED, readOnly</prop>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<bean id="userManager" parent="txProxyTemplate">
<property name="target">
<bean class="some.package.UserManagerImpl">
<property name="userDAO"><ref bean="userDAO"/></property>
</bean>
</property>
</bean>
이후 새로운 service / manager 를 추가 하면 XML 설정 의 증 가 는 다음 과 같 습 니 다.
<bean id="someOtherManager" parent="txProxyTemplate">
<property name="target">
<bean class="some.package.someOtherManagerImpl">
</bean>
</property>
</bean>
위 에서 말 한 것 은 낡은 방법 으로 비교적 전통 적 이다.단점 은 증 량 이 많아 코 피 & 패스 트 를 배치 하면 기분 이 좋 지 않 고 비대 하 다 는 것 이다.
다음은 Feiing 이 내 놓 은 더 좋 은 방안 입 니 다. 제 가 수정 한 것 이 있 습 니 다.
<beans>
<!-- Transaction manager for a single Hibernate SessionFactory (alternative to JTA) -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
<bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property name="transactionManager" ref="transactionManager"/>?
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED</prop>
<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
<bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames">
<value>*Service,*Manager</value>
</property>
<property name="interceptorNames">
<list>
<value>transactionInterceptor</value>
<!-- Interceptor -->
</list>
</property>
</bean>
<bean class="org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor">
<property name="transactionInterceptor" ref="transactionInterceptor"/>?
</bean>
<bean id="userManager" class="some.package.UserManagerImpl" autoWire="byName"/>
</beans>
이후 매번 의 증 가 는 이 단락 이다.
<bean id="userManager" class="some.package.UserManagerImpl" autoWire="byName"/>
일반 bean 을 설정 하 는 방법 과 마찬가지 로 매우 간결 하고 직관 적 입 니 다.
저 는 Feiing 의 Default Advisor AutoProxy Creator 를 Bean Name AutoProxy Creator 로 바 꿨 습 니 다. context 의 모든 bean 이 필요 한 일이 아니 라 Service 층 에서 AOP 를 하면 싱가포르 가 될 수 있다 고 생각 합 니 다.
Robbin 은 이렇게 하면 XML 프로필 에 대한 관심 사 분 리 를 실현 하 는 것 이 바람 직 하 다 고 생각 합 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.