• Spring 使用context:annotation-config的设置


    Spring 使用context:annotation-config的设置;

    还是需要声明Bean的,并且还可能自己定义Annotation;

    xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans"
        xmlns:p="http://www.springframework.org/schema/p" xmlns:util="http://www.springframework.org/schema/util"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
            http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.1.xsd
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd">
        <!-- 通知使用Annotation的方式进行注入 -->
        <context:annotation-config />
        <bean id="name" class="java.lang.String">
            <constructor-arg>
                <value>beanString</value>
            </constructor-arg>
        </bean>
        <!-- 如果将下面的bean注释掉,会因为找不到autowired对象报错; -->
        <bean id="cymbal" class="com.stono.sprtest.Cymbal"></bean>
        <!-- 如果有两个Instrument接口实现类,必须指定一个的autowire-candidate为false -->
        <bean id="harmonica2" class="com.stono.sprtest.Harmonica" autowire-candidate="false"></bean>
        <!-- 如果在@Autowired下面增加@Qualifier指定bean的id,就可以使用两个Instrument接口实现类 -->
        <bean id="harmonica" class="com.stono.sprtest.Harmonica"></bean>
        <!-- @Autowired默认使用byType方式进行注入,可以注入String类型 -->
        <bean id="singer" class="com.stono.sprtest.Singer"></bean>
    </beans>

    AppBean:

    package com.stono.sprtest;
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class AppBeans5 {
    
        @SuppressWarnings("resource")
        public static void main(String[] args) {
            ApplicationContext context = new ClassPathXmlApplicationContext("appbeans5.xml");
            Singer singer = (Singer) context.getBean("singer");
            System.out.println(singer);
        }
    
    }

    Annotation:

    package com.stono.sprtest;
    
    import java.lang.annotation.ElementType;
    import java.lang.annotation.Retention;
    import java.lang.annotation.RetentionPolicy;
    import java.lang.annotation.Target;
    import org.springframework.beans.factory.annotation.Qualifier;
    
    @Target({ ElementType.FIELD, ElementType.PARAMETER, ElementType.TYPE })
    @Retention(RetentionPolicy.RUNTIME)
    @Qualifier
    public @interface HarmonicaInstrument {
    }

    POJO:

    package com.stono.sprtest;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Value;
    
    public class Singer {
        // 可以直接在private属性上面进行设置,也可以在setter方法上面设置;
        @Autowired
        // @Qualifier("harmonica")
        // 使用自定义annotation可以替换@Qualifier,但是在POJO上面会有Annotation
        @HarmonicaInstrument
        private InstrumentI instrument;
        // 增加上required=false,没有string类型的也是可以为空的;
        // @Autowired(required = false)
        // 可以使用 @Value直接进行注入;
        // @Value("annotaionValue")
        // 可以使用@Value进行SpEL表达式值的获取;
        @Value("#{systemProperties['os.name']}")
        private String name;
        public Singer() {
        }
        public Singer(InstrumentI instrument, String name) {
            this.instrument = instrument;
            this.name = name;
        }
        @Override
        public String toString() {
            return "Singer [instrument=" + instrument + ", name=" + name + "]";
        }
    }
    package com.stono.sprtest;
    
    @HarmonicaInstrument
    public class Harmonica implements InstrumentI {
        
    }
  • 相关阅读:
    【转】Ext.data.Store加载及显示数据
    WPF中通过MVVM模式来关闭View
    深入浅出JavaScript (六)分析DOM模型
    深入浅出 JQuery (一) 浅析JQuery
    深入浅出JavaScript (五) 详解Document.write()方法
    深入浅出JavaScript (四)DHTML
    深入浅出jQuery (五) 如何自定义UIDialog?
    BS部分整体学习
    深入浅出JQuery (三) 图片预览效果
    深入浅出AJAX (一) 轻松入门
  • 原文地址:https://www.cnblogs.com/stono/p/4843634.html
Copyright © 2020-2023  润新知