`

Spring分散配置

阅读更多
web.xml
<!-- 监听Log4j -->
	<listener>
		<listener-class>
			org.springframework.web.util.Log4jConfigListener
		</listener-class>
	</listener>
	<context-param>
		<param-name>log4jConfigLocation</param-name>
		<param-value>WEB-INF/log4j.properties</param-value>
	</context-param>
	<context-param>
		<param-name>webAppRootKey</param-name>
		<param-value>netctoss.root</param-value>
	</context-param>
	 <!-- 监听Spring文件 -->
	<listener>
		<listener-class>
			org.springframework.web.context.ContextLoaderListener
		</listener-class>
	</listener>


 <!-- 在这里import其他的Spring配置文件,那么在web.xml中只监听本文件就可以了 -->
   <import resource="springController.xml" />

	<bean id="propertyPlaceholderConfigurer"
		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="order" value="1"/>
		<property name="locations">
			<list>
                  <!-- 
                     当database.properties放在src目录 下就像下面那样写
                     classpath:/database.properties
                   --> 			
				<value> classpath:/com/huanglq/properties/database.properties</value>
			</list>
		</property>
	</bean>
	
	<!-- destroy-method="close"一用完就释放资源 -->
	<bean id="dataSource"
		class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
		<property name="driverClassName" value="${db.driver}">
		</property>
		<property name="url" value="${db.url}"></property>
		<property name="username" value="${db.username}"></property>
		<property name="password" value="${db.password}"></property>
	</bean>



spring配置文件把hibernate.cfg.xml整合进来(eg):
  <bean id="sessionFactory"  
        class="org.springframework.orm.hibernate.LocalSessionFactoryBean">  
     <property name="mappingLocations">  
        <value>classpath*:/**/*.hbm.xml</value>  
      </property>  
       <property name="mappingJarLocations">  
            <list>  
             <value>WEB-INF/lib/xxx-core.jar</value>  
            <value>WEB-INF/lib/xxx-report.jar</value>  
          </list>  
    </property>  
  </bean>  


Spring的applicationContext.xml的例子:
<?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.0.xsd"
default-lazy-init="true">

	<!-- 在这里import其他的Spring配置文件,那么在web.xml中只监听本文件就可以了 -->
	<import resource="springController.xml" />
	<bean id="propertyPlaceholderConfigurer"
		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="order" value="1" />
		<property name="locations">
			<list>
				<!-- 
					当database.properties放在src目录 下就像下面那样写
					classpath:/database.properties
				-->
				<value>
					classpath:/com/huanglq/properties/database.properties
				</value>
			</list>
		</property>
	</bean>

	<!-- destroy-method="close"
BasicDataSource提供了close()方法关闭数据源,所以必须设定destroy-method=”close”属性, 以便Spring容器关闭时,数据源能够正常关闭 -->
	<bean id="dataSource"
		class="org.apache.commons.dbcp.BasicDataSource"
		destroy-method="close">
		<property name="driverClassName" value="${db.driver}">
		</property>
		<property name="url" value="${db.url}"></property>
		<property name="username" value="${db.username}"></property>
		<property name="password" value="${db.password}"></property>
	</bean>

	<!--  
		<bean id="dataSource"
		class="org.apache.commons.dbcp.BasicDataSource">
		<property name="driverClassName" value="com.mysql.jdbc.Driver">
		</property>
		<property name="url" value="jdbc:mysql://127.0.0.1:3306/springtrain"></property>
		<property name="username" value="root"></property>
		<property name="password" value="root"></property>
		</bean>
	-->
	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="dataSource">
			<ref bean="dataSource" />
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">
					org.hibernate.dialect.MySQLDialect
				</prop>
				<prop key="hibernate.show_sql">true</prop>
			</props>
		</property>
		<!-- 解决过多的POJO -->
		<property name="mappingDirectoryLocations">
			<list>
				<value>classpath:/com/huanglq/model</value>
			</list>
		</property>
	</bean>

	<bean id="transactionManager"
		class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory" />
	</bean>

	<!--在这里abstract="true"属性比较有用,他把target属性赋予了代理事务的目标类  -->
	<bean id="baseTransactionProxy"
		class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
		abstract="true">
		<property name="transactionManager" ref="transactionManager" />
		<property name="transactionAttributes">
			<props>
				<prop key="add*">PROPAGATION_REQUIRED</prop>
				<prop key="update*">PROPAGATION_REQUIRED</prop>
				<prop key="modify*">PROPAGATION_REQUIRED</prop>
				<prop key="sel*">PROPAGATION_REQUIRED,readOnly</prop>
				<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
				<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
			</props>
		</property>
	</bean>

	<bean id="studentDao" class="com.huanglq.dao.StudentDaoImpl">
		<property name="sessionFactory" ref="sessionFactory" />
	</bean>

	<bean id="studentService"
		class="com.huanglq.service.StudentServiceImpl">
		<property name="studentDao" ref="studentDao" />
	</bean>

	<!-- 在DAO级别的代理事务 -->
	<bean id="studentDaoTransactionProxy"
		parent="baseTransactionProxy">
		<property name="target" ref="studentDao" />
	</bean>

	<bean id="courseDao" class="com.huanglq.dao.CourseDaoImpl">
		<property name="sessionFactory" ref="sessionFactory" />
	</bean>

	<bean id="courseService"
		class="com.huanglq.service.CourseServiceImpl">
		<property name="studentService" ref="studentService" />
		<property name="courseDao" ref="courseDao" />
	</bean>

	<bean id="courseDaoTransactionProxy"
		parent="baseTransactionProxy">
		<property name="target" ref="courseDao" />
	</bean>

	<bean id="instructorDao"
		class="com.huanglq.dao.InstructorDaoImpl">
		<property name="sessionFactory" ref="sessionFactory" />
	</bean>

	<bean id="instructorService"
		class="com.huanglq.service.InstructorServiceImpl">
		<property name="instructorDao" ref="instructorDao" />
	</bean>

	<bean id="instructorDaoTransactionProxy"
		parent="baseTransactionProxy">
		<property name="target" ref="courseDao" />
	</bean>
</beans>

分享到:
评论
2 楼 qsrock 2008-10-16  
mappingJarLocations:指定加载的映射文件在jar文件中 ,
当时也是看书的写的,现在看来好像没有用
具体可参考http://blog.csdn.net/yuansicau/archive/2008/09/03/2874165.aspx
1 楼 songjoyce 2008-09-23  
配置这个有什么作用 <property name="mappingJarLocations">    

相关推荐

    SpringCloud——分布式配置中心(Spring Cloud Config)

    为了提高配置中心的可用性,我们可以部署多个 Config Server 实例,并使用负载均衡器来分散请求。同时,Git 仓库也可以设置为镜像,以确保即使单个仓库不可用,也能从其他副本获取配置。 **八、多环境支持** Spring...

    使用Spring配置文件实现AOP

    这篇教程将详细讲解如何通过Spring的配置文件来实现AOP。 一、理解AOP概念 AOP的核心思想是将分散在各个模块中的交叉性代码(如日志、事务处理)抽取出来,形成独立的切面,以便于复用和维护。它提供了一种模块化的...

    spring读取配置文件

    假设你有一个复杂的项目结构,配置文件分散在多个目录下,你可以创建一个主配置文件,然后在这个主配置文件中通过`import`元素来引用其他目录的配置文件。例如,你可以在`/config/main-config.xml`中写入如下内容: ...

    springcloud部署redis集群

    以下将详细介绍如何在SpringCloud中配置和使用Redis集群。 首先,你需要了解Redis集群的基本概念。Redis集群通过数据分片(Sharding)技术,将数据分散存储在多个节点上,每个节点只负责一部分数据,从而实现数据的...

    spring加载多个配置文件

    在Spring框架中,加载多个配置文件是常见的需求,特别是在大型项目中,为了保持代码的整洁和模块化,通常会将不同的配置分散到多个文件中。本文将深入探讨如何在Spring中实现这一功能。 首先,Spring提供了多种方式...

    多个spring的配置

    - 这种方式允许将不同的配置项分散到多个文件中,每个文件可以专注于特定的功能或者模块。例如,`applicationContext_nzh.xml`可能负责网络相关的配置,而`applicationContext_lzm.xml`则可能管理日志记录等。这样...

    spring集成redis单节点、集群、哨兵配置

    在Spring中集成Redis单节点,我们需要在Spring的配置文件中定义RedisConnectionFactory。这通常通过JedisConnectionFactory或者LettuceConnectionFactory实现,其中Jedis是早期的Redis客户端,而Lettuce是更新、更...

    Spring 加载多个配置文件

    尤其在构建大型应用时,为了提高代码的可读性和可维护性,将系统配置分散至多个文件中成为了一种常见的实践。本文将深入探讨如何在 Spring 中有效地加载多个配置文件,以及这一策略背后的理论依据。 #### 二、为...

    SpringCloud之七 分布式配置中心SpringCloudConfig.pdf

    1. 配置集中管理:所有的配置都可以统一存放在一个中心化的服务中,而不是分散在各个微服务项目中,这样可以更加方便地管理配置,也便于跟踪配置的变更历史。 2. 支持远程仓库:Spring Cloud Config可以支持多种...

    SPRING:bean配置properties

    为了适应更复杂的应用场景,我们还可以配置多个`PropertyPlaceholderConfigurer`实例,以达到整合多工程下多个分散的properties文件的目的。例如: ```xml class="org.springframework.beans.factory.config....

    Spring事务配置的五种方式

    本文将详细介绍Spring事务配置的五种方式,以及它们的工作原理和适用场景。 首先,Spring事务管理的核心组件包括DataSource、TransactionManager和代理机制。DataSource通常用于连接数据库,而TransactionManager则...

    spring 动态多数据源配置代码

    当涉及到多数据源配置时,Spring框架提供了强大的支持,允许我们动态地管理多个数据库连接。这在分布式系统、数据分片或是数据库隔离等场景下非常有用。下面将详细介绍Spring动态多数据源配置的相关知识点。 1. **...

    关于spring系统中多系统的配置

    ### 处理多工程下的分散配置 在实际开发中,一个大型项目可能由多个子模块组成,每个子模块都可能有自己的配置文件。为了统一管理和使用这些配置文件,可以创建多个`PropertyPlaceholderConfigurer`实例来分别处理...

    spring配置[收集].pdf

    本书旨在整合分散在各种文档中的配置信息,为读者提供一个系统化的Spring配置指南,旨在帮助开发者更有效地理解和使用Spring框架。 Spring框架的核心理念是依赖注入,它改变了Java企业级开发的方式,通过松耦合的...

    Spring事务配置[收集].pdf

    这里我们将深入探讨Spring的事务配置,主要基于提供的资料内容。 首先,Spring事务配置通常涉及三个关键组件: 1. **DataSource**: 数据源是连接到数据库的桥梁,用于获取数据库连接。在Spring中,可以通过`org....

    spring + redis集群

    1. Spring Boot应用配置,启用Redis连接池和集群配置。 2. Redis工具类,封装了基本的Redis操作,如存取对象、哈希操作等。 3. 示例实体类,演示如何存储和检索对象。 4. Maven配置,确保所有依赖正确导入并能正常...

    基于注解和Spring的多数据源配置和使用

    3. **使用`@Configuration`和`@Bean`注解**:在Spring配置类中,使用`@Configuration`注解标记该类为配置类,然后使用`@Bean`注解声明数据源对象。例如: ```java @Configuration public class DataSourceConfig ...

    Spring AOP之基于Schema配置总结与案例

    **Spring AOP:基于Schema配置的总结与案例** 在Java企业级开发中,Spring框架以其强大的功能和灵活性深受开发者喜爱。其中,Spring AOP(面向切面编程)是解决横切关注点问题的一个重要工具,它允许我们把业务逻辑...

    SpringCloud-Config配置中心搭建保姆级教程

    同时,由于配置文件分散在不同的服务中,也增加了维护成本。 3. **集群部署复杂**:对于需要集群部署的服务而言,每个节点都需要有自己的 JAR 文件副本。这意味着每次更新都需要对所有节点进行相同的构建、部署流程...

    Spring Cloud在Java微服务项目中的配置管理实践

    随着微服务数量的增长,这种分散的配置管理方式会带来以下几个主要问题: - **复杂性增加**:服务数量的增加使得配置文件的数量也随之增多,这不仅增加了管理的复杂度,还可能导致配置错误的发生。 - **难以统一...

Global site tag (gtag.js) - Google Analytics