add test for "resolve the placeholder for listener.txProducerGroup() "
diff --git a/rocketmq-spring-boot/src/test/java/org/apache/rocketmq/spring/autoconfigure/RocketMQAutoConfigurationTest.java b/rocketmq-spring-boot/src/test/java/org/apache/rocketmq/spring/autoconfigure/RocketMQAutoConfigurationTest.java
index d613808..53c716e 100644
--- a/rocketmq-spring-boot/src/test/java/org/apache/rocketmq/spring/autoconfigure/RocketMQAutoConfigurationTest.java
+++ b/rocketmq-spring-boot/src/test/java/org/apache/rocketmq/spring/autoconfigure/RocketMQAutoConfigurationTest.java
@@ -21,7 +21,10 @@
 import org.apache.rocketmq.client.producer.DefaultMQProducer;
 import org.apache.rocketmq.spring.annotation.ExtRocketMQTemplateConfiguration;
 import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
+import org.apache.rocketmq.spring.annotation.RocketMQTransactionListener;
 import org.apache.rocketmq.spring.core.RocketMQListener;
+import org.apache.rocketmq.spring.core.RocketMQLocalTransactionListener;
+import org.apache.rocketmq.spring.core.RocketMQLocalTransactionState;
 import org.apache.rocketmq.spring.core.RocketMQTemplate;
 import org.apache.rocketmq.spring.support.DefaultRocketMQListenerContainer;
 import org.junit.Assert;
@@ -34,6 +37,7 @@
 import org.springframework.boot.test.context.runner.ContextConsumer;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.messaging.Message;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
@@ -159,6 +163,18 @@
 
     }
 
+    @Test
+    public void testRocketMQTransactionListener() {
+        runner.withPropertyValues("rocketmq.name-server=127.0.0.1:9876",
+                "rocketmq.producer.group=spring_rocketmq",
+                "demo.rocketmq.transaction.producer.group=transaction-group1").
+                withUserConfiguration(TestTransactionListenerConfig.class).
+                run((context) -> {
+                    assertThat(context).hasSingleBean(MyRocketMQLocalTransactionListener.class);
+
+                });
+
+    }
 
     @Configuration
     static class TestConfig {
@@ -219,6 +235,30 @@
     }
 
     @Configuration
+    static class TestTransactionListenerConfig {
+        @Bean
+        public Object rocketMQLocalTransactionListener() {
+            return new MyRocketMQLocalTransactionListener();
+        }
+
+    }
+
+    @RocketMQTransactionListener(txProducerGroup = "${demo.rocketmq.transaction.producer.group}")
+    static class MyRocketMQLocalTransactionListener implements RocketMQLocalTransactionListener {
+
+
+        @Override
+        public RocketMQLocalTransactionState executeLocalTransaction(Message msg, Object arg) {
+            return RocketMQLocalTransactionState.COMMIT;
+        }
+
+        @Override
+        public RocketMQLocalTransactionState checkLocalTransaction(Message msg) {
+            return RocketMQLocalTransactionState.COMMIT;
+        }
+    }
+
+    @Configuration
     static class ExtRocketMQTemplateConfig {
 
         @Bean