锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 浜屻佹祴璇曚唬鐮侊細(xì) 涓婇潰榪欐閰嶇疆鏂囦歡瑙勫畾浜嗗湪鏃╀笂6鐐瑰拰鏅氫笂8鐐規(guī)墽琛宖inanceDAO瀵硅薄鐨刢onfirmOrder()鏂規(guī)硶.
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref local="dataSource" />
</property>
<!-- bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager"/-->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<!-- Hibernate Transaction Interceptor Definition -->
<bean id="hibernateTransactionInterceptor"
class="org.springframework.transaction.interceptor.TransactionInterceptor"
parent="transactionIntercetorTemplate">
<property name="transactionManager">
<bean id="hibernateTransactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
</property>
</bean>
<!-- Transction Intercetor's Template -->
<bean id="transactionIntercetorTemplate" abstract="true">
<property name="transactionAttributes">
<props>
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="is*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="check*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="insert*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="delete*">PROPAGATION_REQUIRED,-BussException</prop>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<!-- 瀹氫箟鑷姩浠g悊鐢熸垚鍣?/span>-->
<bean id="autoProxyCreator"
class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="interceptorNames">
<list>
<idref bean="hibernateTransactionInterceptor" />
<idref bean="jdbcTransactionInterceptor" />
</list>
</property>
<property name="beanNames">
<value>*Service</value>
<!--list>
<idref bean="bookService" />
</list-->
<!--娣誨姞Service bean-->
</property>
</bean>
<bean id="hibernateDaoTemplate" abstract="true">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<!-- Dao 瀹氫箟 -->
<bean id="imageDao" class="com.fbyssssite.dao.ImageDao"
parent="hibernateDaoTemplate" />
<bean id="imageFolderDao" class="com.fbyssssite.dao.ImageFolderDao"
parent="hibernateDaoTemplate" />
<!-- Service 瀹氫箟 -->
<bean id="imageService" class="com.fbyssssite.bo.ImageService" autowire="byName">
<property name="dao" ref="imageDao"></property>
</bean>
<bean id="imageFolderService" class="com.fbyssssite.bo.ImageFolderService" autowire="byName">
<property name="dao" ref="imageFolderDao"></property>
</bean>
public void delete(Object entity,IBaseUser user) throws BussException {
super.delete(entity, user);
ImageFolder folder = (ImageFolder)entity;
String folderId = folder.getId();
IImageService imageService = ServiceFactory.getImageService();
imageService.deleteAllInFolder(folderId,user);
}
public void deleteAllInFolder(String id,IBaseUser sysUser) throws BussException {(鏉ユ簮:www.iocblog.net)
log.info("鍒犻櫎鍥劇墖澶?"+id+"'涓殑鍥劇墖...");
throw new BussException(1,"涓存椂嫻嬭瘯錛氭祴璇曚簨鍔℃槸鍚︾敓鏁堢殑寮傚父銆傛祴璇曞畬姣曞悗鍒犻櫎姝よ鍙ャ?/span>",log);
/*
StringBuffer sql = new StringBuffer("delete ");
sql.append("from ");
sql.append(getEntityClassName());
SqlBuilder sqlBuilder = SqlBuilder.getInstance();
sqlBuilder.appendWhereCondition(sql, "folderId='"+id+"'");
bulkUpdate(sql.toString(), sysUser);
*/
}
涓夈佹祴璇曟晥鏋滐細(xì)
鎶涘嚭BussException涔嬪悗錛宨mageFolder瀹炰綋騫舵病鏈夎鍒犻櫎錛岃屾槸鍥炴粴浜嗐?br />
鍥涖佹敞鎰忎簨欏癸細(xì)
1.鍏朵腑鐨?nbsp;BussException鏄竴涓狢heckedException(緇ф壙鑷狤xception)錛岃繖閲屼笉榪囨槸涓涓緥瀛愶紝濡傛灉鍏朵粬鏂規(guī)硶闇瑕佸悓鏍風(fēng)殑鏂瑰紡澶勭悊浜嬪姟錛屼篃瑕佸姞涓?BussException錛屽惁鍒欎笉鑳藉洖婊氾紱濡傛灉鏄竴涓猆nCheckedException錛屽氨涓嶉渶瑕佸湪榪欓噷閰嶇疆錛岄粯璁ゅ氨浼?xì)鍥炴粴銆?br />
2.濡傛灉閲囩敤MySQL錛宻how table status鍙互鏌ョ湅琛ㄧ殑ENGINE綾誨瀷錛孧yISAM鏄笉鏀寔浜嬪姟鐨勶紝濡傛灉闇瑕佷簨鍔★紝搴旇鏀規(guī)垚InnoDB:alter table [tablename] engine = InnoDB;
]]>
]]> <bean id="methodInvokingJobDetail"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject"><ref bean="financeDAO"/></property>
<property name="targetMethod"><value>confirmOrder</value></property>
</bean>
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="methodInvokingJobDetail"/>
</property>
<property name="cronExpression">
<value>0 0 6,12,20 * * ?</value>
</property>
</bean> <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list><ref local="cronTrigger"/></list>
</property>
</bean>
闄勶細(xì)cronExpression閰嶇疆璇存槑
瀛楁
鍏佽鍊?/th>
鍏佽鐨勭壒孌婂瓧絎?/th>
縐?/code>
0-59
, - * /
鍒?/code>
0-59
, - * /
灝忔椂
0-23
, - * /
鏃ユ湡
1-31
, - * ? / L W C
鏈堜喚
1-12 鎴栬?JAN-DEC
, - * /
鏄熸湡
1-7 鎴栬?SUN-SAT
, - * ? / L C #
騫達(dá)紙鍙夛級
鐣欑┖, 1970-2099
, - * /
PropertyEditor
灝嗙敤浜庢妸瀛楃涓蹭粠java.lang.String
綾誨瀷杞寲涓哄疄闄呯殑灞炴ф垨鍙傛暟綾誨瀷銆?br />
鎵浠ュ彲浠ユ斁蹇冪殑浣跨敤<value/>娉ㄥ叆int絳夐潪String綾誨瀷
NB: A bean that implements this interface cannot be used as a normal bean. A FactoryBean is defined in a bean style, but the object exposed for bean references is always the object that it creates.
FactoryBeans can support singletons and prototypes, and can either create objects lazily on demand or eagerly on startup.
This interface is heavily used within the framework, for example for the AOP ProxyFactoryBean or JndiObjectFactoryBean. It can be used for application components, but this is not common outside of infrastructure code.
浣跨敤hibernate鐨勯厤緗涓嬶細(xì)
<bean id="transactionManager" class="org.springframework.
orm.hibernate.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
TransactionAttribute
instances (or Strings to be converted to TransactionAttribute
instances).
1. 瀵?/span>advice緇嗙矑搴︾殑鎺у埗錛屽彲浠ラ氳繃pointcut綾繪潵鎺у埗銆?/span>
2. advisor鏄?/span>advice鍜?/span>pointcut鐨勯泦鍚堜綋銆?/span>
3. 鎺у埗鏂規(guī)硶濡備笅錛?/span>
a) 瀹氫箟Pointcut涓殑ClassFilter瀹炵幇綾誨拰MethodMatcher瀹炵幇綾伙紝瀹屾垚瀵?/span>class鍜?/span>method鏂規(guī)硶鐨?/span>advice鐨勬帶鍒訛紝鍏朵腑MethodMatcher涓殑matches(Method method, Class targetClass)鏂規(guī)硶鏄class鍜?/span>method鐨勫弻閲嶅茍闆嗘帶鍒?/span>
b) 瀹氫箟鏂扮殑Pointcut瀹炵幇綾伙紝騫跺皢ClassFilter瀹炵幇綾誨拰MethodMatcher瀹炵幇綾昏祴鍊?/span>
c) 瀹氫箟鏂扮殑advisor騫朵笖瀹炵幇PointcutAdvisor鎺ュ彛
d) 鍦ㄥ畾涔夌殑advisor涓嬌鐢?/span>PointcutAdvisor鎺ュ彛涓殑getPointcut()鍜?/span>getAdvice()灝?/span>Pointcut鐨勫疄鐜扮被鍜岄渶瑕佺殑advice榪涜浼犻?/span>
e) 鏈鍚庡湪application-context.xml涓皢
<bean id="XXXX"
class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="InterceptorNames">
<list>
<idref local="瀹氫箟鏂扮殑advisor鐨?/span>id">
</list>
<property>
</bean>
<bean id="瀹氫箟鏂扮殑advisor鐨?/span>id" class="瀹氫箟鏂扮殑advisor鐨勭被 " >
</bean>
4. 涓轟簡浣跨敤闈欐佺殑Pointcut錛屽彲浠ヤ嬌鐢?/span>StaticMethodMatcherPointcut錛岃繖鏃跺?/span>
public final boolean isRuntime()
{
return false;
}
渚夸笉鑳戒慨鏀逛簡銆備篃灝辨槸闈欐佺殑Pointcut
5. 鏇寸畝鍗曠殑鏄嬌鐢?/span>NameMatchMethodPointcutAdvisor錛岃繖閲屼竴涓?/span>advisor鍙湁涓涓?/span>advice
Spring瀛︿範(fàn)蹇冨緱錛堝洓錛?/span>
1. Spring瀵?/span>Struts榪炴帴錛氫負(fù)浜嗗湪Struts涓嬌鐢?/span>Spring ,闇瑕佸湪Struts鐨?/span>congfig涓姞鍏?/span>
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/applicationContext.xml"/>
</plug-in>
2. 瀵逛簬action鐨?/span>Spring鐨勫簲鐢ㄦ湁涓ょ鏂規(guī)硶錛?/span>
a) Extends ActionSupport錛屼嬌鐢ㄥ叾涓殑getWebApplicationContext()寰楀埌ApplicationContext錛屽湪閫氳繃getBean()鏂規(guī)硶寰楀埌鎵闇瑕佺殑綾伙紝涓嶈繃榪欐牱鐨勮瘽Struts灝卞拰Spring鑰﹀悎鍦ㄤ竴璧蜂簡銆?/span>
b) 閲嶆柊Delegating actions 錛氬湪Struts鐨?/span>congfig榪涜閰嶇疆錛?/span>
<action path="/XXXX"
type="org.springframework.web.struts.DelegatingActionProxy"/>
鐒跺悗鍦?/span>Spring涓繘琛?/span>bean鐨勯厤緗細(xì)
<bean name="/XXXX"
榪欓噷涓洪渶瑕佺敤鍒扮殑class錛岄氳繃Ioc鏉ヨ繘琛岄厤緗?/span>
<property name="YYYY">
<ref bean="YYYY"/>
</property>
</bean>
<bean id="YYYY" class="YYYYYY">
</bean>
褰撶劧涔熷彲浠ュ湪struts涓姞鍏?/span>
<controller processorClass=
"org.springframework.web.struts.DelegatingRequestProcessor"/>
榪欐牱灝卞彧闇瑕佸啓
<action path="/XXXX"/>灝卞彲浠ヤ簡錛?/span>DelegatingRequestProcessor鑳藉鑷姩鍒嗘淳
1. advice鏈夊洓縐嶏細(xì)Before advice 錛?/span>After advice 錛?/span>Around advice ,Throws advice
2. 榪欏洓縐?/span>advice鍒嗗埆闇瑕佺戶鎵跨殑鎺ュ彛涓?/span>
Advice type |
Interface |
Throws advice |
org.aopalliance.intercept.MethodInterceptor |
Before advice |
org.springframework.aop.BeforeAdvice |
After advice |
org.springframework.aop.AfterReturningAdvice |
Throws advice |
org.springframework.aop.ThrowsAdvice |
3錛?/span>Around advice鍜?/span>Before advice鐨勫尯鍒槸Before advice鏄彧瑕佹病鏈夊紓甯革紝鐩爣鏂規(guī)硶涓瀹氫細(xì)琚皟鐢紝鐒惰?/span>Around advice錛屽彧鏈夊綋璋冪敤MethodInvocation.proceed()鍚庣洰鏍囨柟娉曟墠鑳借璋冪敤銆傝屼笖Around advice榪樺彲浠ヨ繑鍥炴兂榪斿洖鐨勫鹼細(xì)濡?/span>Object obj=invocation.proceed();