spring integration summary

Spring框架整合配置示例
本文展示了一个使用Spring框架进行整合配置的例子,包括了数据源、事务管理、JPA实体管理工厂等组件的定义,以及Spring Integration模块的配置。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:int="http://www.springframework.org/schema/integration"
xmlns:int-jpa="http://www.springframework.org/schema/integration/jpa"
xmlns:int-jms="http://www.springframework.org/schema/integration/jms"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:stream="http://www.springframework.org/schema/integration/stream"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd
http://www.springframework.org/schema/integration/jms http://www.springframework.org/schema/integration/jms/spring-integration-jms.xsd
http://www.springframework.org/schema/integration/stream http://www.springframework.org/schema/integration/stream/spring-integration-stream.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd
http://www.springframework.org/schema/integration/jpa http://www.springframework.org/schema/integration/jpa/spring-integration-jpa.xsd
">

<context:annotation-config />
<context:component-scan base-package="com.test" />


<context:property-placeholder location="classpath:database.properties"
system-properties-mode="FALLBACK" />

<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${database.mq.driver}" />
<property name="url" value="${database.mq.url}" />
<property name="username" value="${database.mq.user}" />
<property name="password" value="${database.mq.pass}" />
</bean>

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<constructor-arg ref="entityManagerFactory" />
</bean>

<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="jpaVendorAdapter" ref="vendorAdaptor" />
<property name="packagesToScan" value="com.test" />
</bean>

<bean id="entityManager"
class="org.springframework.orm.jpa.support.SharedEntityManagerBean">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>

<bean id="abstractVendorAdaptor" abstract="true">
<property name="generateDdl" value="false" />
<property name="database" value="ORACLE" />
<property name="showSql" value="false" />
</bean>

</beans>
### Spring应用关闭时的日志分析 在Spring应用关闭的过程中,会触发一系列的关闭钩子和生命周期方法,以确保资源能够被正确释放。以下是关于JMX beans注销和Druid数据源关闭的日志分析。 #### JMX Beans 注销过程 当Spring应用关闭时,Spring框架会调用`MBeanExporter`中的相关方法来注销所有已注册的JMX beans。这一过程通常会在`ContextClosedEvent`事件触发后执行。以下是一个典型的日志输出示例: ```plaintext 2023-10-01 12:00:00 [main] INFO o.s.jmx.export.annotation.AnnotationMBeanExporter - Unregistering JMX-exposed beans on shutdown 2023-10-01 12:00:00 [main] DEBUG o.s.jmx.export.annotation.AnnotationMBeanExporter - Located MBean 'bean:name=exampleBean': registering with JMX server 2023-10-01 12:00:00 [main] DEBUG o.s.jmx.export.annotation.AnnotationMBeanExporter - Unregistering JMX bean with key 'bean:name=exampleBean' ``` 上述日志表明,Spring框架正在注销所有通过`@ManagedResource`或`@EnableMBeanExport`注解暴露的JMX beans[^4]。注销过程是通过调用`MBeanServer.unregisterMBean()`方法实现的。 #### Druid 数据源关闭过程 对于Druid数据源,Spring应用关闭时会调用其`close()`方法以释放连接池中的所有资源。以下是典型的日志输出示例: ```plaintext 2023-10-01 12:00:01 [main] INFO com.alibaba.druid.pool.DruidDataSource - {dataSource-1} closed 2023-10-01 12:00:01 [main] DEBUG com.alibaba.druid.pool.DruidDataSource - Close connection pool. pool size: 10, active connections: 0 ``` 这些日志表明Druid数据源正在关闭,并且确认当前连接池中没有活动连接[^1]。如果存在未关闭的连接,Druid会尝试强制关闭它们以确保资源不会泄漏。 #### 日志级别与配置 为了捕获上述日志信息,需要确保日志框架(如log4j2)的配置文件中设置了适当的日志级别。例如: ```properties # log4j2.properties logger.spring.level = DEBUG logger.druid.level = DEBUG ``` 上述配置将Spring框架和Druid数据源的日志级别设置为`DEBUG`,以便捕获更详细的日志信息。 ### 示例代码:自定义关闭逻辑 如果需要在应用关闭时执行额外的清理操作,可以使用`@PreDestroy`注解或实现`DisposableBean`接口。以下是一个示例: ```java import javax.annotation.PreDestroy; import org.springframework.stereotype.Component; @Component public class CustomShutdownComponent { @PreDestroy public void cleanup() { System.out.println("Executing custom cleanup logic during application shutdown."); } } ``` 通过这种方式,可以在应用关闭时插入自定义的日志记录或其他清理操作。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值