zoukankan      html  css  js  c++  java
  • 【sping揭秘】10、SpringIOC容器扩展

    关于component-scan操作(去除,失效)

    这个spring中的配置项,可以扫描我们对应的包下面的类,自动把带上@component,@service,@controller, @repository的类加入spring容器中托管

    注意哦,component-scan 会默认吧annotation-config打开

    但是不仅仅是这些,我们还可以对其中的范围进行限制

    我们可以通过include-fileter和exclude-filter进行包含和排除

    注意我们的范围选定方式有5种!

    在我们没有排除之前:

    <?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:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context-4.3.xsd">
    
        <context:component-scan base-package="cn.cutter">
            <!-- 控制扫描范围 ,根据注解扫描进入容器-->
            <context:include-filter type="annotation" expression="cn.cutter"/>
            <!-- <context:exclude-filter type="aspectj" expression="* cn.cutter.noscan.*"/> -->
        </context:component-scan>
        <!-- <context:annotation-config /> 这个属性在component中默认已经是true了 -->
        
        <!-- 国际化配置 -->
        <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
        
            <property name="basenames">
                <list>
                    <value>i18/users</value>
                    <value>i18/errormsg</value>
                </list>
            </property>
        
        </bean>
        
        <bean id="ttmRateService" class="cn.cutter.simplefx.service.impl.MockTTMRateServiceImpl"></bean>
        
        <bean id="fooBar" class="cn.cutter.start.resourceloader.FooBar" />
        
        <bean id="fooBar2" class="cn.cutter.start.resourceloader.FooBar2" />
        
        <bean id="resourceDemo" class="cn.cutter.start.resourceloader.ResourceDemo">
            <property name="resource">
                <value>classpath:applicationContext-bean.xml</value>
            </property>
        </bean>
        
        <!-- <bean id="myObject" class="cn.cutter.start.bean.MyObject"></bean> -->
    
        <!-- <alias name="FXNewsProvider" alias="provideralias"/> -->
        
        <!-- <bean id="test4key2" ></bean>
        
        <bean id="" class="..." lazy-init="true">
            <constructor-arg>
                <ref bean=""  parent=""/>
            </constructor-arg>
            
            <property name="test1">
                <value>ttttt1</value>
                <idref bean="ttttt1"/>
            </property>
            
            <property name="test2">
                <list>
                    <value>test2value</value>
                    <ref bean="test2222"/>
                    <idref bean="test22222"/>
                    <bean class="..."></bean>
                </list>
            </property>
            
            <property name="test3">
                <set>
                    <value>test2value</value>
                    <ref bean="test2222"/>
                    <idref bean="test22222"/>
                    <bean class="..."></bean>
                </set>
            </property>
            
            <property name="test4">
                <map>
                    <entry key="test4key1">
                        <value>something</value>
                    </entry>
                    
                    <entry key-ref="test5key2">
                        <list>
                            <value>test2value</value>
                            <ref bean="test2222"/>
                            <idref bean="test22222"/>
                            <bean class="..."></bean>
                        </list>
                    </entry>
                </map>        
            </property>
            
            
        </bean> -->
        
    </beans>

    测试

    @Test
        public void testScan() {
            ApplicationContext ctx = this.before();
            
            //TestScan
            TestScan testScan = (TestScan) ctx.getBean("testScan");
            if(testScan == null) {
                System.out.println("扫描排除");
            } else {
                System.out.println("扫描进入");
                testScan.sayHello();
            }
        }

    结果展示:

  • 相关阅读:
    NOI2007项链工厂——sbTreap代码
    终于还是卡着进队了
    SCOI RP+=INF
    每日算法——新型在线LCA
    每日算法——并查集的应用
    每日算法--矩阵乘法优化递推
    神一般的数据结构--可持久化treap
    算法竞赛中的数论经典定理
    Baby Step Gaint Step
    素数分组 哥德巴赫猜想
  • 原文地址:https://www.cnblogs.com/cutter-point/p/8934331.html
Copyright © 2011-2022 走看看