icanfly 写道
如果带上事务,那么用annotation方式的事务注解和bean配置,事务会失效,要将service bean配置到xml文件中才行
这个问题是由于问答上有解决方案
引用
这个问题很经典了
在主容器中(applicationContext.xml),将Controller的注解排除掉
<context:component-scan base-package="com">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />
</context:component-scan>
而在springMVC配置文件中将Service注解给去掉
<context:component-scan base-package="com">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service" />
</context:component-scan>
因为spring的context是父子容器,所以会产生冲突,Controller会先进行扫描装配,而此时的Service还没有进行事务的增强处理,得到的将是原样的Service(没有经过事务加强处理,故而没有事务处理能力) ,最后才是applicationContext.xml中的扫描配置进行事务处理
分享到:
相关推荐
这可以通过`include-filter`和`exclude-filter`元素实现,可以指定类型(@TypeFilter)、表达式(@AspectJ、Regexp)等过滤条件。 四、组件注解 Spring提供了多种注解用于标记组件: - `@Component`:基础注解,...
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/> <context:include-filter type="annotation" expression="org.springframework.stereotype.Service"/> ...
- **排除特定类**:使用`<context:exclude-filter>`来排除不需要的类。 - **懒加载**:通过`lazy-init="true"`属性可以控制Bean的初始化时机。 - **条件化扫描**:结合`@Conditional`注解,根据运行时环境条件决定...
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" /> </context:component-scan> ``` 2. **数据库连接配置**:我们需要从`jdbc.properties`文件中读取数据库...
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/> </context:component-scan> ``` - 这样可以避免在`action.xml`、`service.xml`文件中手动配置action和...
此外,可以使用过滤器(`<context:include-filter>`和`<context:exclude-filter>`)来指定包含或排除的类,支持四种过滤方式:注解、类名、正则表达式和AspectJ表达式。 **注解详解**: 1. **@Controller**:用于...
上述配置示例中,`<context:exclude-filter>`用于排除匹配正则表达式的类,而`<context:include-filter>`则用于仅包含特定注解的类。 #### Spring MVC核心注解详解 1. **@Controller** - **作用**:标记一个类...
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/> <!-- 只包含Repository接口及其实现类 ,其他不行--> <context:include-filter type="assignable" ...
<context:exclude-filter type="annotation" expression="org.bc.redis.controller.UserController"/> </context:component-scan> ``` 或者 ``` <context:component-scan base-package="org.bc.redis.service" use-...
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan> ``` - 复制这段配置,并粘贴在其下方,修改`base-package`的值为自己的表所在...
`base-package`属性指定了扫描的起点,而`<context:include-filter>`和`<context:exclude-filter>`则可以进一步定制扫描规则。例如,你可以通过注解、类名、正则表达式或AspectJ表达式来过滤扫描的类。 Spring支持...
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan> ``` ##### 2.2 数据源配置 接下来,定义了一个名为`pooledDataSource`的数据源...
例如,`<context:exclude-filter>`和`<context:include-filter>`可以分别用于排除和包含特定的类。 3. **Spring MVC注解** - `@Controller`:标记在类上表示该类是一个Spring MVC控制器,用于处理HTTP请求。 - `@...
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/> </context:component-scan> ``` #### 五、总结 Spring框架以其强大的功能和灵活性成为了Java开发中最受...
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" /> </context:component-scan> ``` 而在`servlet-context.xml`中,我们扫描Controller但不扫描Service: ``...
在配置中,`<context:component-scan>`标签用于扫描并自动管理Bean,而`<context:exclude-filter>`则用于排除特定类型的Bean,例如@Controller注解的控制器。 2. **Spring 3.1.1**:Spring作为整体框架,除了...
`<context:exclude-filter>`排除了标注了`@Service`的类,这是为了避免在Spring MVC初始化时,Service层的类被提前扫描和装配,因为此时事务增强处理还没有进行,Service将不具备事务处理能力。 服务器启动时加载...
`base-package`属性定义了要扫描的包,而`include-filter`和`exclude-filter`可以分别包含和排除特定的类。 4. **注解处理器注册** - `<context:annotation-config>`标签会自动注册包括`...