一种繁琐的SSH设计(一)

当使用的这个框架之后就是觉得挺累。一个简单的东西要写N个配置和文件。

层次比较清晰:
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以此来保证需要建立索引的所有文档都可以利用队列进行,
保证不会因很多原因导致的文档索引丢失。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值