首先注解配置这个东西,在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类型的配置。
启动后效果如下: