利用注解配置装配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类型的配置。

启动后效果如下:

posted on 2019-08-06 10:47  尤达  阅读(634)  评论(0编辑  收藏  举报

导航