一、SpringMVC 对包的扫描范围扩大

SpringMVC 默认只会扫描 @Controller,@Service,@Repository 和 @Component 注解的类,当我们想要扩大扫描范围的时候,就需要使用 @ComponentScan 注解来实现。

@ComponentScan 注解可以指定要扫描的包路径,这样可以让 SpringMVC 更加灵活,可以扫描更多的类,从而让我们的应用更加完善。

二、事务配置不生效

当 SpringMVC 对包的扫描范围扩大后,就会出现事务配置不生效的问题。这是因为 SpringMVC 在扫描类的时候,不会去扫描 @Transactional 注解。

因此,当我们在使用 @ComponentScan注解扩大SpringMVC 的扫描范围时,就会出现事务配置不生效的问题。

三、解决方案

要解决这个问题,我们可以使用 @EnableTransactionManagement 注解,这个注解可以让 SpringMVC 去扫描 @Transactional 注解,从而使事务配置生效。

例如:

@Configuration@EnableTransactionManagementpublic class TransactionConfig {@Beanpublic PlatformTransactionManager txManager() {return new DataSourceTransactionManager(dataSource());}}
Java

在上面的代码中,我们使用 @EnableTransactionManagement 注解,这样就可以让 SpringMVC 去扫描 @Transactional 注解,从而使事务配置生效。