最近在看《sPRing in Action 4th》,讲到javaConfig的@Import和@ImportResource的使用,于是照着例子做了个小demo,加深自己的印象。在Spring中配置有xml和JavaConfig的配置方式,相比来说,使用JavaConfig的方式配置会更利于管理,类型安全。
package com.jiaobuchong.soundsystem;import com.jiaobuchong.dao.CompactDisc;import org.springframework.beans.factory.annotation.Autowired;public class CDPlayer implements CompactDisc { private CompactDisc cd; @Autowired //构造函数注入 public CDPlayer(CompactDisc cd) { this.cd = cd; } public void play() { cd.play(); }}123456789101112131415161718123456789101112131415161718
SgtPeppers.java:
package com.jiaobuchong.soundsystem;import com.jiaobuchong.dao.CompactDisc;import org.springframework.stereotype.Component;public class SgtPeppers implements CompactDisc { private String title = "Sgt. Pepper's Lonely Hearts Club Band"; private String artist = "The Beatles"; public void play() { System.out.println("Playing " + title + " by " + artist); }}123456789101112123456789101112
xml配置文件
cons-injec.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" xmlns:c="http://www.springframework.org/schema/c" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd "> <bean id="compactDisc" class="com.jiaobuchong.soundsystem.BlankDisc" c:_0="Sgt. Pepper's Lonely Hearts Club Band" c:_1="The Beatles"> <constructor-arg> <list> <value>Sgt. Pepper's Lonely Hearts Club Band</value> <value>With a Little Help from My Friends</value> <value>Lucy in the Sky with Diamonds</value> <value>Getting Better</value> <value>Fixing a Hole</value> <!-- ...other tracks omitted for brevity... --> </list> </constructor-arg> </bean></beans>12345678910111213141516171819202122231234567891011121314151617181920212223
测试类
CDPlayerTest.java:
package com.jiaobuchong.soundsystem;import com.jiaobuchong.config.CDConfig;import com.jiaobuchong.config.CDPlayerConfig;import com.jiaobuchong.dao.CompactDisc;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;/*CDPlayerTest takes advantage of Spring’s SpringJUnit4ClassRunner to have a Spring applicationcontext automatically created when the test starts. And the @Context-Configuration annotationtells it to load its configuration from the CDPlayerConfig class. */@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(classes = CDConfig.class)public class CDPlayerTest { @Autowired private CompactDisc cd; @Test public void cdShouldNotBeNull() {// assertNotNull(cd); cd.play(); }}12345678910111213141516171819202122232425262728291234567891011121314151617181920212223242526272829