麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

《Spring實戰》學習筆記(二)JavaConfig @Import 和 @ImportResource注解的使用

2019-11-14 12:07:55
字體:
來源:轉載
供稿:網友

最近在看《sPRing in Action 4th》,講到javaConfig的@Import和@ImportResource的使用,于是照著例子做了個小demo,加深自己的印象。在Spring中配置有xml和JavaConfig的配置方式,相比來說,使用JavaConfig的方式配置會更利于管理,類型安全。

demo項目結構(Maven約定):

├── pom.xml└── src ├── main │ ├── java │ │ └── com │ │ └── jiaobuchong │ │ ├── config │ │ │ ├── CDConfig.java │ │ │ ├── CDPlayerConfig.java │ │ │ └── SoundSystemConfig.java │ │ ├── dao │ │ │ └── CompactDisc.java │ │ └── soundsystem │ │ ├── BlankDisc.java │ │ ├── CDPlayer.java │ │ └── SgtPeppers.java │ └── resources │ └── cons-injec.xml └── test └── java └── com └── jiaobuchong ├── soundsystem ├── CDPlayerTest.java ├── CDPlayerTest1.java └── CDPlayerTest2.java12345678910111213141516171819202122232425261234567891011121314151617181920212223242526

config包下的三個配置類

CDConfig.java:
package com.jiaobuchong.config;import com.jiaobuchong.dao.CompactDisc;import com.jiaobuchong.soundsystem.SgtPeppers;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configurationpublic class CDConfig { @Bean // 將SgtPeppers注冊為 SpringContext中的bean public CompactDisc compactDisc() { return new SgtPeppers(); // CompactDisc類型的 }}12345678910111213141234567891011121314
CDPlayerConfig.java:
package com.jiaobuchong.config;import com.jiaobuchong.dao.CompactDisc;import com.jiaobuchong.soundsystem.CDPlayer;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Import;@Configuration@Import(CDConfig.class) //導入CDConfig的配置public class CDPlayerConfig { @Bean(name = "cDPlayer") public CDPlayer cdPlayer(CompactDisc compactDisc) { /*這里會注入CompactDisc類型的bean 這里注入的這個bean是CDConfig.class中的CompactDisc類型的那個bean*/ return new CDPlayer(compactDisc); }}12345678910111213141516171819201234567891011121314151617181920
SoundSystemConfig.java:
package com.jiaobuchong.config;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Import;import org.springframework.context.annotation.ImportResource;@Configuration@Import(CDPlayerConfig.class) @ImportResource("classpath:cons-injec.xml") //導入xml配置項public class SoundSystemConfig {}1234567891011121312345678910111213@Configuration注解表示定義一個配置類,這里使用注解@Bean就好比如xml配置時的<bean>元素,如:<bean id="cdPlayer" class="com.jiaobuchong.soundsystem.CDPlayer"> <property name="cd" ref="compactDisc" /></bean>123123@ImportResource類似于xml配置時的:<import resource="cons-injecxml" />11

dao包下的一個接口:

CompactDisc.java:
package com.jiaobuchong.dao;public interface CompactDisc { void play();}123456123456

soundsystem包下的類:

BlankDisc.java:
package com.jiaobuchong.soundsystem;import com.jiaobuchong.dao.CompactDisc;import java.util.List;public class BlankDisc implements CompactDisc { private String title; private String artist; private List<String> tracks; public BlankDisc(String title, String artist, List<String> tracks) { this.title = title; this.artist = artist; this.tracks = tracks; } public void play() { System.out.println("Playing " + title + " by " + artist); for (String track : tracks) { System.out.println("-Track: " + track); } }}123456789101112131415161718192021222324123456789101112131415161718192021222324
CDPlayer.java:
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
CDPlayerTest1.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.beans.factory.annotation.Qualifier;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(classes = CDPlayerConfig.class)public class CDPlayerTest1 { @Autowired @Qualifier("cDPlayer") private CompactDisc cd; @Test public void cdShouldNotBeNull() {// assertNotNull(cd); cd.play(); }}123456789101112131415161718192021222324252627123456789101112131415161718192021222324252627
CDPlayerTest2.java:
package com.jiaobuchong.soundsystem;import com.jiaobuchong.config.CDPlayerConfig;import com.jiaobuchong.config.SoundSystemConfig;import com.jiaobuchong.dao.CompactDisc;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(classes = SoundSystemConfig.class)public class CDPlayerTest2 { @Autowired @Qualifier("cDPlayer") private CompactDisc cd; @Autowired @Qualifier("compactDisc") private CompactDisc cd1; @Test public void cdShouldNotBeNull() {// assertNotNull(cd); cd.play(); } @Test public void testBlankDisc() { cd1.play(); }}12345678910111213141516171819202122232425262728293031323334351234567891011121314151617181920212223242526272829303132333435

看完這個demo代碼,基本上@Import和ImportResource的意義應該也就明白了,更多細節請參考《Spring in Action 4th》。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 免费视频a | 亚洲视频欧美 | 91av亚洲 | 国产18视频 | 九九热精品视频在线免费观看 | 男男羞羞视频网站国产 | 国产一级毛片网站 | 毛片视频免费观看 | 久久草在线观看视频 | 色播一区| 日本不卡一二三区 | 久久亚洲美女视频 | 欧美城网站地址 | 高清国产午夜精品久久久久久 | 欧美成人一级 | 亚洲视频欧美 | 韩国三级日本三级香港三级黄 | av在线免费观看网 | 黄视频免费观看 | 国产色91| 91美女啪啪 | 中文字幕激情视频 | 桥本有菜免费av一区二区三区 | 日本a∨精品中文字幕在线 被啪羞羞视频在线观看 | 韩国美女一区 | 日韩黄色片免费看 | www69xxxxx| 蜜桃麻豆视频 | 亚洲国产二区 | 久久美女免费视频 | 欧美亚州 | 91一区二区三区久久久久国产乱 | 国产亚洲精品久久久久婷婷瑜伽 | 欧美成人综合视频 | 国产在线播放一区二区 | 中文字幕一二区 | 欧美aaaaaaaa| www.91操| 毛片一级视频 | 男人久久天堂 | 黄色av网站免费 |