zoukankan      html  css  js  c++  java
  • 利用注解配置装配Bean实现依赖关系

    首先注解配置这个东西,在java项目里是用不了的,只有在spring项目中可以使用,它的作用,和xml配置基本一样。

    但我个人感觉使用注解进行配置要比xml来的方便得多。

    利用xml进行配置:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
        <bean id="knight" class="Knight_Quest.BraveKnight">
            <constructor-arg ref="quest">
            </constructor-arg>
        </bean>
    
        <bean id="quest" class="Knight_Quest.SlayDragonQuest">
            <constructor-arg value="#{T(System).out}"/>
        </bean>
    </beans>

    可以看到使用xml进行配置是看起来相当的繁琐,在调用系统方法时还要使用#{xxx}

    对比注解方式:

    package Knight_Quest;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    public class KnightConfig {
        @Bean
        public Knight DarKnight(){
            return new BraveKnight(quest());
        }
    
        @Bean
        public Quest quest(){
            return new SlayDragonQuest(System.out);
        }
    }

    可以说是比xml要清爽很多,可读性高了不少,不需要繁琐的标签,只需要几个注解,就能轻松搞定。

    有了配置文件,我们的程序也还是无法启动的,还是需要创建一个main方法,并在main方法里加载这个配置:

    package Knight_Quest;
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.annotation.AnnotationConfigApplicationContext;
    import org.springframework.context.support.FileSystemXmlApplicationContext;
    
    public class KnightMain {
        public static void main(String[] args) throws Exception{
    //        ApplicationContext context = new FileSystemXmlApplicationContext(
    //                "C:\Users\lblyc\IdeaProjects\SpringTest\src\Knight_Quest\KnightConfigX.xml");
            ApplicationContext context = new AnnotationConfigApplicationContext(KnightConfig.class);
            Knight knight = (Knight) context.getBean("DarKnight");
            knight.embarkOnQuest();
        }
    }

    被注释的内容就是采用了加载xml类型的配置。

    启动后效果如下:

  • 相关阅读:
    在SQL使用正则表达式
    What is callback?
    readResolve()的使用
    What is a serialVersionUID and why should I use it?
    How to terminate a thread in Java
    Eclipse导入源文件出现编码的问题
    What is livelock?
    [转]不要迷失在技术的海洋中
    [转]基于.Net的单点登录(SSO)解决方案
    IIS网站真正301重定向的方法(包括首页和内页)
  • 原文地址:https://www.cnblogs.com/MYoda/p/11307540.html
Copyright © 2011-2022 走看看