10.4.7 配置业务层组件
随着系统逐渐增大,系统中的各种组件越来越多,如果将系统中的全部组件都部署在同一个配置文件里,则必然导致配置文件非常庞大,难以维护。因此,我们推荐将系统中各种组件分模块、分层进行配置,从而提供更好的可维护性。
对于本系统,因为系统规模较小,故没有将系统中的组件分模块进行配置,但我们将业务逻辑组件和DAO
组件分开在两个配置文件中进行管理。
因为业务逻辑组件
涉及事务管理,所以在业务逻辑组件配置文件
里配置了业务逻辑组件
、数据源
、事务管理器
、事务拦截器
、MailSender
和MailMessage
等组件。
具体的配置文件如下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
| <?xml version="1.0" encoding="utf-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:task="http://www.springframework.org/schema/task" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd">
<bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager" p:sessionFactory-ref="sessionFactory" />
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl" p:host="smtp.163.com" p:username="spring_test" p:password="123abc"> <property name="javaMailProperties"> <props> <prop key="mail.smtp.auth">true</prop> <prop key="mail.smtp.timeout">25000</prop> </props> </property> </bean>
<bean id="mailMessage" class="org.springframework.mail.SimpleMailMessage" p:from="spring_test@163.com" p:subject="竞价通知" /> <bean id="auctionService" class="org.crazyit.auction.service.impl.AuctionServiceImpl" p:userDao-ref="auctionUserDao" p:bidDao-ref="bidDao" p:itemDao-ref="itemDao" p:kindDao-ref="kindDao" p:stateDao-ref="stateDao" p:mailSender-ref="mailSender" p:message-ref="mailMessage" />
<task:scheduler id="myScheduler" pool-size="20" /> <task:scheduled-tasks scheduler="myScheduler"> <task:scheduled ref="auctionService" method="updateWiner" fixed-delay="86400000" /> </task:scheduled-tasks>
<tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="get*" read-only="true" timeout="8" /> <tx:method name="*" timeout="5" /> </tx:attributes> </tx:advice>
<aop:config> <aop:pointcut id="auctionPc" expression="execution(* org.crazyit.auction.service.impl.*Impl.*(..))" /> <aop:advisor advice-ref="txAdvice" pointcut-ref="auctionPc" /> </aop:config> </beans>
|
各种组件依赖通过配置文件设置,由容器管理其依赖,从而实现系统的解耦。