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>
分享到:
相关推荐
为了提高配置中心的可用性,我们可以部署多个 Config Server 实例,并使用负载均衡器来分散请求。同时,Git 仓库也可以设置为镜像,以确保即使单个仓库不可用,也能从其他副本获取配置。 **八、多环境支持** Spring...
这篇教程将详细讲解如何通过Spring的配置文件来实现AOP。 一、理解AOP概念 AOP的核心思想是将分散在各个模块中的交叉性代码(如日志、事务处理)抽取出来,形成独立的切面,以便于复用和维护。它提供了一种模块化的...
假设你有一个复杂的项目结构,配置文件分散在多个目录下,你可以创建一个主配置文件,然后在这个主配置文件中通过`import`元素来引用其他目录的配置文件。例如,你可以在`/config/main-config.xml`中写入如下内容: ...
以下将详细介绍如何在SpringCloud中配置和使用Redis集群。 首先,你需要了解Redis集群的基本概念。Redis集群通过数据分片(Sharding)技术,将数据分散存储在多个节点上,每个节点只负责一部分数据,从而实现数据的...
在Spring框架中,加载多个配置文件是常见的需求,特别是在大型项目中,为了保持代码的整洁和模块化,通常会将不同的配置分散到多个文件中。本文将深入探讨如何在Spring中实现这一功能。 首先,Spring提供了多种方式...
- 这种方式允许将不同的配置项分散到多个文件中,每个文件可以专注于特定的功能或者模块。例如,`applicationContext_nzh.xml`可能负责网络相关的配置,而`applicationContext_lzm.xml`则可能管理日志记录等。这样...
在Spring中集成Redis单节点,我们需要在Spring的配置文件中定义RedisConnectionFactory。这通常通过JedisConnectionFactory或者LettuceConnectionFactory实现,其中Jedis是早期的Redis客户端,而Lettuce是更新、更...
尤其在构建大型应用时,为了提高代码的可读性和可维护性,将系统配置分散至多个文件中成为了一种常见的实践。本文将深入探讨如何在 Spring 中有效地加载多个配置文件,以及这一策略背后的理论依据。 #### 二、为...
1. 配置集中管理:所有的配置都可以统一存放在一个中心化的服务中,而不是分散在各个微服务项目中,这样可以更加方便地管理配置,也便于跟踪配置的变更历史。 2. 支持远程仓库:Spring Cloud Config可以支持多种...
为了适应更复杂的应用场景,我们还可以配置多个`PropertyPlaceholderConfigurer`实例,以达到整合多工程下多个分散的properties文件的目的。例如: ```xml class="org.springframework.beans.factory.config....
本文将详细介绍Spring事务配置的五种方式,以及它们的工作原理和适用场景。 首先,Spring事务管理的核心组件包括DataSource、TransactionManager和代理机制。DataSource通常用于连接数据库,而TransactionManager则...
当涉及到多数据源配置时,Spring框架提供了强大的支持,允许我们动态地管理多个数据库连接。这在分布式系统、数据分片或是数据库隔离等场景下非常有用。下面将详细介绍Spring动态多数据源配置的相关知识点。 1. **...
### 处理多工程下的分散配置 在实际开发中,一个大型项目可能由多个子模块组成,每个子模块都可能有自己的配置文件。为了统一管理和使用这些配置文件,可以创建多个`PropertyPlaceholderConfigurer`实例来分别处理...
本书旨在整合分散在各种文档中的配置信息,为读者提供一个系统化的Spring配置指南,旨在帮助开发者更有效地理解和使用Spring框架。 Spring框架的核心理念是依赖注入,它改变了Java企业级开发的方式,通过松耦合的...
这里我们将深入探讨Spring的事务配置,主要基于提供的资料内容。 首先,Spring事务配置通常涉及三个关键组件: 1. **DataSource**: 数据源是连接到数据库的桥梁,用于获取数据库连接。在Spring中,可以通过`org....
1. Spring Boot应用配置,启用Redis连接池和集群配置。 2. Redis工具类,封装了基本的Redis操作,如存取对象、哈希操作等。 3. 示例实体类,演示如何存储和检索对象。 4. Maven配置,确保所有依赖正确导入并能正常...
3. **使用`@Configuration`和`@Bean`注解**:在Spring配置类中,使用`@Configuration`注解标记该类为配置类,然后使用`@Bean`注解声明数据源对象。例如: ```java @Configuration public class DataSourceConfig ...
**Spring AOP:基于Schema配置的总结与案例** 在Java企业级开发中,Spring框架以其强大的功能和灵活性深受开发者喜爱。其中,Spring AOP(面向切面编程)是解决横切关注点问题的一个重要工具,它允许我们把业务逻辑...
同时,由于配置文件分散在不同的服务中,也增加了维护成本。 3. **集群部署复杂**:对于需要集群部署的服务而言,每个节点都需要有自己的 JAR 文件副本。这意味着每次更新都需要对所有节点进行相同的构建、部署流程...
随着微服务数量的增长,这种分散的配置管理方式会带来以下几个主要问题: - **复杂性增加**:服务数量的增加使得配置文件的数量也随之增多,这不仅增加了管理的复杂度,还可能导致配置错误的发生。 - **难以统一...