• spring和springmvc中,Configuration注解Bean重复加载


    问题:bean重复加载
    1.如下代码所示,开启Configuration注解,实现Bean代码注入,发现bean重复加载

    @Configuration
    public class EhCacheConfig {
        
        @Bean(name="cacheManagerFactoryBean")
        public EhCacheManagerFactoryBean ehCacheManagerFactoryBean(){
            EhCacheManagerFactoryBean cacheManagerFactoryBean = new EhCacheManagerFactoryBean();
            cacheManagerFactoryBean.setConfigLocation(new ClassPathResource("ehcache.xml"));
            cacheManagerFactoryBean.setShared (true);
            return cacheManagerFactoryBean;
        }
        
        @Bean(name="ehCacheFactoryBean")
        public EhCacheFactoryBean ehCacheFactoryBean(){
            EhCacheFactoryBean ehCacheFactoryBean = new EhCacheFactoryBean();
            ehCacheFactoryBean.setCacheManager(ehCacheManagerFactoryBean().getObject());
            ehCacheFactoryBean.setCacheName("accountCacheName");
            return ehCacheFactoryBean;
        }
        
        @Bean(name="cache")
        public Cache cache(){
            EhCacheCache cache = new EhCacheCache(ehCacheFactoryBean().getObject());
            return cache;
        }
    }

    2.spring.xml扫描配置

    	<context:component-scan base-package="com.bsoft.platform" >
    	 	<context:include-filter  type="annotation" expression="org.springframework.stereotype.Service" />   
    	</context:component-scan>	
    

      


    3.spring-mvc扫描配置

    	<context:component-scan base-package="com.bsoft.platform" use-default-filters="true">
    		<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />
    	</context:component-scan>
    

      



    4.解决:
    在spring-mvc上加上exclude-filter,排除不需要扫描的注解,代码如下所示

    <context:component-scan base-package="com.bsoft.platform" use-default-filters="true">
    		<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />
    		<context:exclude-filter type="annotation" expression="org.springframework.context.annotation.Configuration" />
    </context:component-scan>

    或者这样排除springmvc不需要扫描的类
    <context:exclude-filter type="regex" expression="com.bsoft.platform..*Config" />

  • 相关阅读:
    Android 绑定Service的实现方法二:使用Messenger
    Android 利用SurfaceView进行图形绘制
    Android 垂直SeekBar
    Android Camera(一) 调用系统相机应用
    Android Camera(二) Camera程序编写
    算法题009 电梯调度算法
    Git基础使用教程:第一个Git项目
    Android上的GPS程序报错:Fail to find provider info for com.google.android.gsf.gservices
    JUnit4:多组数据的单元测试:用JUnit4做参数化测试
    Git基础:添加与提交
  • 原文地址:https://www.cnblogs.com/xunianchong/p/6958119.html
Copyright © 2020-2023  润新知