浏览 3094 次
锁定老帖子 主题:一种繁琐的SSH设计(一)
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-04-10
层次比较清晰: DAO - > SERVICE - > MODEL - > ACTION - > FORMBEAN - > VIEW 数据层 和 业务层:spring dao + hibernate action:struts view : struts + jsp + jsf 整个模型按照ModelsTry的模型来设计的: 先看一下数据层和 业务层: jdbc.properties: #c3p0 datasource.driverClassName=oracle.jdbc.driver.OracleDriver datasource.url=jdbc:oracle:thin:@192.168.1.9:1521:import hibernate.c3p0.minPoolSize=10 hibernate.c3p0.maxPoolSize=150 hibernate.c3p0.maxIdleTime=20 hibernate.c3p0.timeout=100000 hibernate.c3p0.max_statement=50 datasource.username=cms datasource.password=123456 #proxool proxool.alias=bidcms proxool.driverClassName=oracle.jdbc.driver.OracleDriver proxool.url=jdbc:oracle:thin:@192.168.1.9:1521:import proxool.user=cms proxool.password=123456 proxool.maximumConnectionCount=150 proxool.minimumConnectionCount=10 proxool.prototypeCount=5 #mysql icb icb.jdbc.driverClassName=com.mysql.jdbc.Driver icb.jdbc.url=jdbc:mysql://192.168.1.9:3306/release?autoReconnect=true&useUnicode=true&characterEncoding=GBK&zeroDateTimeBehavior=convertToNull icb.jdbc.username=cms icb.jdbc.password=123456 icb.jdbc.maxsize=50 icb.jdbc.maxidle=10 icb.jdbc.maxwait=15000 applicationContext-resource.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <!-- For mail settings and future properties files --> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath:jdbc.properties</value> </list> </property> </bean> <bean id="dataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource"> <property name="alias" value="${proxool.alias}" /> <property name="driver" value="${proxool.driverClassName}" /> <property name="driverUrl" value="${proxool.url}" /> <property name="user" value="${proxool.user}"/> <property name="password" value="${proxool.password}"/> <property name="maximumConnectionCount" value="${proxool.maximumConnectionCount}" /> <property name="minimumConnectionCount" value="${proxool.minimumConnectionCount}" /> <property name="prototypeCount" value="${proxool.prototypeCount}" /> <property name="delegateProperties" value="user=${proxool.user},password=${proxool.password}"/> </bean> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource" /> </bean> <bean id="icbDataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName"> <value>${icb.jdbc.driverClassName}</value> </property> <property name="url"> <value>${icb.jdbc.url}</value> </property> <property name="username"> <value>${icb.jdbc.username}</value> </property> <property name="password"> <value>${icb.jdbc.password}</value> </property> <property name="maxActive"> <value>${icb.jdbc.maxsize}</value> </property> <property name="maxIdle"> <value>${icb.jdbc.maxidle}</value> </property> <property name="maxWait"> <value>${icb.jdbc.maxwait}</value> </property> </bean> <bean id="jdbcTemplateICB" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="icbDataSource" /> </bean> </beans> 与hibernate搭配 applicationContext-hibernate.xml <?xml version="1.0"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.Oracle9Dialect </prop> </props> </property> <property name="dataSource"> <ref bean="dataSource" /> </property> <property name="configLocation"> <value>classpath:hibernate.cfg.xml</value> </property> <property name="lobHandler"> <ref bean="oracleLobHandler" /> </property> </bean> <!-- 使用spring+hibernate处理oracle BLOB--> <bean id="nativeJdbcExtractor" class="org.springframework.jdbc.support.nativejdbc.SimpleNativeJdbcExtractor" /> <bean id="oracleLobHandler" class="org.springframework.jdbc.support.lob.OracleLobHandler" lazy-init="true"> <property name="nativeJdbcExtractor"> <ref bean="nativeJdbcExtractor" /> </property> </bean> <!-- 完毕--> <!-- Document索引luncene创建拦截起 --> <bean id="indexAfterAdvice" class="com.bidlink.cms.system.IndexAfterAdvice" autowire="byName"> <!-- <property name="jmsTemplate"> <ref bean="jmsTemplate" /> </property> --> </bean> <bean id="indexAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor"> <property name="advice"> <ref local="indexAfterAdvice" /> </property> <property name="patterns"> <list> <value>.*save.*</value> <value>.*update.*</value> <value>.*remove.*</value> <value>.*transFromBidInfo.*</value> </list> </property> </bean> <!-- 日志拦截器--> <bean id="logBeforeAdvice" class="com.bidlink.cms.system.LogBeforeAdvice"> <property name="sessionFactory"> <ref local="sessionFactory" /> </property> </bean> <bean id="logAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor"> <property name="advice"> <ref local="logBeforeAdvice" /> </property> <property name="patterns"> <list> <value>.*save.*</value> <value>.*update.*</value> <value>.*remove.*</value> <!-- 7大分类的信息浏览还没有截获--> </list> </property> </bean> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"/> </bean> <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor"> <property name="transactionManager"> <ref bean="transactionManager" /> </property> <property name="transactionAttributes"> <props> <prop key="save*">PROPAGATION_REQUIRED</prop> <prop key="remove*">PROPAGATION_REQUIRED</prop> <prop key="update*">PROPAGATION_REQUIRED</prop> <prop key="userObtainInfo">PROPAGATION_REQUIRED</prop> <prop key="loadUserByUsername">PROPAGATION_REQUIRED</prop> <prop key="trans*">PROPAGATION_REQUIRED</prop> <prop key="reverseTrans*">PROPAGATION_REQUIRED</prop> <prop key="list*">PROPAGATION_REQUIRED,readOnly</prop> <prop key="*">PROPAGATION_REQUIRED,readOnly</prop> </props> </property> </bean> <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"> <property name="beanNames"> <value>*Service</value> </property> <property name="interceptorNames"> <list> <value>transactionInterceptor</value> <value>logAdvisor</value> <value>indexAdvisor</value> <!-- 此处增加新的Interceptor --> </list> </property> </bean> <bean class="org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor"> <property name="transactionInterceptor" ref="transactionInterceptor" /> </bean> <bean id="userDao" class="com.bidlink.cms.dao.system.hibernate.UserDaoImp"> <property name="sessionFactory"> <ref local="sessionFactory" /> </property> </bean> <bean id="userService" class="com.bidlink.cms.service.system.spring.UserServiceImp" autowire="byName"> <property name="userDao"> <ref local="userDao" /> </property> <property name="roleCacheByCode"> <ref bean="roleCacheByCode" /> </property> <property name="mailServer"> <ref bean="mailServer" /> </property> </bean> 可以看到跟大多数数据库处理的模式一样的。 日志利用spring AOP连接 记录 而在文档建立之后,利用spring after连接对文档进行拦截和建立索引。 后又在此过程中加入JMS以此来保证需要建立索引的所有文档都可以利用队列进行, 保证不会因很多原因导致的文档索引丢失。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-04-12
proxool.url=jdbc:oracle:thin:@192.168.1.9:1521:import
大哥你的这个import是什么意思? |
|
返回顶楼 | |
发表时间:2008-04-14
引用 hc_face 昨天
proxool.url=jdbc:oracle:thin:@192.168.1.9:1521:import 大哥你的这个import是什么意思? 192.168.1.9上oracle 的SID为import |
|
返回顶楼 | |
发表时间:2008-09-25
你是在bidlink吧!
|
|
返回顶楼 | |
发表时间:2008-09-25
tovegar 写道 当使用的这个框架之后就是觉得挺累。一个简单的东西要写N个配置和文件。
层次比较清晰: DAO - > SERVICE - > MODEL - > ACTION - > FORMBEAN - > VIEW 数据层 和 业务层:spring dao + hibernate action:struts view : struts + jsp + jsf 整个模型按照ModelsTry的模型来设计的: 可以看到跟大多数数据库处理的模式一样的。 日志利用spring AOP连接 记录 而在文档建立之后,利用spring after连接对文档进行拦截和建立索引。 后又在此过程中加入JMS以此来保证需要建立索引的所有文档都可以利用队列进行, 保证不会因很多原因导致的文档索引丢失。 model放到service内吧 那样子设计还是有一点充血的意思的. formbean与view不能算作一层吧.... 如果真的 有ajax层在 formbean里 也是可以理解的. |
|
返回顶楼 | |