SSH整合开发中,applicationContext.xml配置疑问

milkcy 2011-08-19 09:07:19
问题:目前数据库只有user表,一个对象映射,做了user的基本操作。下面是applicationContext.xml的配置。如果后面引入很多对象,那么就会有相应的dao和service,这样sessionFactory和dao的注入是不是也要重复写配置代码呢?如下面红色配置。


<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
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-2.5.xsd">

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/newoa"></property>
<property name="username" value="root"></property>
<property name="password" value="123456"></property>
<property name="maxActive" value="100"></property>
<property name="maxIdle" value="30"></property>
<property name="maxWait" value="500"></property>
<property name="defaultAutoCommit" value="true"></property>
</bean>
<!-- 配置sessionFactory,把session放入到后面class中,和hibernate联系起来 -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<!-- datasource 上面配置的hibernate配置数据库数据库源 -->
<property name="dataSource" ref="dataSource"></property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/zengyi/model/User.hbm.xml</value>
<value>com/zengyi/model/Memo.hbm.xml</value>
</list>
</property>
</bean>

<bean id="userDao" class="com.zengyi.dao.impl.UserDaoImpl" scope="singleton">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>

<bean id="userService" class="com.zengyi.service.impl.UserServiceImpl">
<property name="userDao" ref="userDao"></property>
</bean>

<bean id="UserAction" class="com.zengyi.action.UsersAction" scope="prototype">
<property name="service" ref="userService"></property>
</bean>

<!-- 语言切换 -->
<bean id="ChangeLangAction" class="com.zengyi.action.ChangeLangAction" scope="prototype">
</bean>
<!-- 验证码 -->
<bean id="PictureCheckCode" class="com.zengyi.action.PictureCheckCode" scope="prototype">
</bean>
</beans>
...全文
232 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
凌风雪雕 2011-08-19
  • 打赏
  • 举报
回复
呵呵 我认识你
美维 2011-08-19
  • 打赏
  • 举报
回复
某个类中用到了 就要在配置文件中注入进去


否则 可以 自己 new



=================================
不明白可以继续问
milkcy 2011-08-19
  • 打赏
  • 举报
回复
<?xml version="1.0" encoding="GBK"?>
<!-- 指定Spring配置文件的Schema信息 -->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">

<!-- 定义数据源Bean,使用C3P0数据源实现 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<!-- 指定连接数据库的驱动 -->
<property name="driverClass" value="com.mysql.jdbc.Driver"/>
<!-- 指定连接数据库的URL -->
<property name="jdbcUrl" value="jdbc:mysql://localhost/hrSystem"/>
<!-- 指定连接数据库的用户名 -->
<property name="user" value="root"/>
<!-- 指定连接数据库的密码 -->
<property name="password" value="32147"/>
<!-- 指定连接数据库连接池的最大连接数 -->
<property name="maxPoolSize" value="40"/>
<!-- 指定连接数据库连接池的最小连接数 -->
<property name="minPoolSize" value="1"/>
<!-- 指定连接数据库连接池的初始化连接数 -->
<property name="initialPoolSize" value="1"/>
<!-- 指定连接数据库连接池的连接的最大空闲时间 -->
<property name="maxIdleTime" value="20"/>
</bean>

<!-- 定义Hibernate的SessionFactory -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<!-- 依赖注入数据源,注入正是上面定义的dataSource -->
<property name="dataSource" ref="dataSource"/>
<!-- mappingResouces属性用来列出全部映射文件 -->
<property name="mappingResources">
<list>
<!-- 以下用来列出Hibernate映射文件 -->
<value>org/crazyit/hrsystem/model/Application.hbm.xml</value>
<value>org/crazyit/hrsystem/model/Attend.hbm.xml</value>
<value>org/crazyit/hrsystem/model/AttendType.hbm.xml</value>
<value>org/crazyit/hrsystem/model/CheckBack.hbm.xml</value>
<value>org/crazyit/hrsystem/model/Employee.hbm.xml</value>
<value>org/crazyit/hrsystem/model/Payment.hbm.xml</value>
</list>
</property>
<!-- 定义Hibernate的SessionFactory的属性 -->
<property name="hibernateProperties">
<props>
<!-- 指定数据库方言 -->
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLInnoDBDialect</prop>
<!-- 是否根据需要每次自动创建数据库 -->
<prop key="hibernate.hbm2ddl.auto">update</prop>
<!-- 显示Hibernate持久化操作所生成的SQL -->
<prop key="hibernate.show_sql">true</prop>
<!-- 将SQL脚本进行格式化后再输出 -->
<prop key="hibernate.format_sql">true</prop>
</props>
</property>
</bean>

<!-- 配置Hibernate的局部事务管理器,使用HibernateTransactionManager类 -->
<!-- 该类实现PlatformTransactionManager接口,是针对Hibernate的特定实现-->
<bean id="transactionManager" class=
"org.springframework.orm.hibernate3.HibernateTransactionManager">
<!-- 配置HibernateTransactionManager时需要依注入SessionFactory的引用 -->
<property name="sessionFactory" ref="sessionFactory"/>
</bean>

<!-- 配置事务切面Bean,指定事务管理器 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<!-- 用于配置详细的事务语义 -->
<tx:attributes>
<!-- 所有以'get'开头的方法是read-only的 -->
<tx:method name="get*" read-only="true"/>
<!-- 其他方法使用默认的事务设置 -->
<tx:method name="*"/>
</tx:attributes>
</tx:advice>
<aop:config>
<!-- 配置一个切入点,匹配org.crazyit.hrsystem.service.impl包下
所有以Impl结尾的类的所有方法的执行 -->
<aop:pointcut id="leePointcut"
expression=
"execution(* org.crazyit.hrsystem.service.impl.*Impl.*(..))"/>
<!-- 指定在leePointcut切入点应用txAdvice事务切面 -->
<aop:advisor advice-ref="txAdvice"
pointcut-ref="leePointcut"/>
</aop:config>
<!-- 定义业务逻辑组件模板 -->
<bean id="managerTemplate" abstract="true" lazy-init="true">
<!-- 为业务逻辑组件注入DAO组件 -->
<property name="appDao" ref="appDao"/>
<property name="attendDao" ref="attendDao"/>
<property name="typeDao" ref="attendTypeDao"/>
<property name="checkDao" ref="checkDao"/>
<property name="empDao" ref="employeeDao"/>
<property name="mgrDao" ref="managerDao"/>
<property name="payDao" ref="payDao"/>
</bean>
<!-- 定义两个业务逻辑组件,继承业务逻辑组件的模板 -->
<bean id="empManager"
class="org.crazyit.hrsystem.service.impl.EmpManagerImpl"
parent="managerTemplate"/>
<bean id="mgrManager"
class="org.crazyit.hrsystem.service.impl.MgrManagerImpl"
parent="managerTemplate"/>

<bean id="cronTriggerPay"
class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<!-- 使用嵌套Bean的方式来定义任务Bean -->
<bean
class="org.springframework.scheduling.quartz.JobDetailBean">
<!-- 指定任务Bean的实现类 -->
<property name="jobClass"
value="org.crazyit.hrsystem.schedule.PayJob"/>
<!-- 为任务Bean注入属性 -->
<property name="jobDataAsMap">
<map>
<entry key="empMgr" value-ref="empManager"/>
</map>
</property>
</bean>
</property>
<!-- 指定Cron表达式:每月3日2时启动 -->
<property name="cronExpression" value="0 0 2 3 * ? *"/>
</bean>

<!-- 定义触发器来管理任务Bean -->
<bean id="cronTriggerPunch"
class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<!-- 使用嵌套Bean的方式来定义任务Bean -->
<bean
class="org.springframework.scheduling.quartz.JobDetailBean">
<!-- 指定任务Bean的实现类 -->
<property name="jobClass"
value="org.crazyit.hrsystem.schedule.PunchJob"/>
<!-- 为任务Bean注入属性 -->
<property name="jobDataAsMap">
<map>
<entry key="empMgr" value-ref="empManager"/>
</map>
</property>
</bean>
</property>
<!-- 指定Cron表达式:周一到周五7点、12点执行调度 -->
<property name="cronExpression"
value="0 0 7,12 ? * MON-FRI"/>
</bean>
<!-- 执行实际的调度调度 -->
<bean
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref local="cronTriggerPay"/>
<ref local="cronTriggerPunch"/>
</list>
</property>
</bean>
</beans>


李刚的ssh案例的配置文件是这样的,不过没弄明白,测试了,没成功
bijanen19861113 2011-08-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 madull1220 的回复:]

嗯 不同的对象对应不同的dao和service,都需要配置的,但是sessionFactory就配置一次就可以了,让所有的dao去调用同一个sessionFactory。你也可以在spring配置里写一个abstractDao,其他的dao来继承它,一般不同的dao业务都放在不同的XX.xml中。然后整合下就可以了。
[/Quote]

按照不同的实体的操作分成各自的模块,也就有了各自的dao和Service,都需要配置的
坐观垂钓者 2011-08-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 madull1220 的回复:]
嗯 不同的对象对应不同的dao和service,都需要配置的,但是sessionFactory就配置一次就可以了,让所有的dao去调用同一个sessionFactory。你也可以在spring配置里写一个abstractDao,其他的dao来继承它,一般不同的dao业务都放在不同的XX.xml中。然后整合下就可以了。
[/Quote]
忧郁的苦笑 2011-08-19
  • 打赏
  • 举报
回复
sessionFactory和dao的注入是要重复写配置代码的
飓风zj 2011-08-19
  • 打赏
  • 举报
回复
没明白 lz的意思 凡是你的service 或者dao,action 都要进行注册 但是只需要在spring注册一次就可以了啊
但是dao注入到service得时候当然要在service Bean中加入你注册时候的id了,action同理 ,其他的也一样了
madull1220 2011-08-19
  • 打赏
  • 举报
回复
嗯 不同的对象对应不同的dao和service,都需要配置的,但是sessionFactory就配置一次就可以了,让所有的dao去调用同一个sessionFactory。你也可以在spring配置里写一个abstractDao,其他的dao来继承它,一般不同的dao业务都放在不同的XX.xml中。然后整合下就可以了。

81,090

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧