亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

《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》。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
自拍亚洲一区欧美另类| 国产精品久久久久免费a∨| 亚洲男女性事视频| 欧美日韩国产va另类| 日韩精品999| 欧美电影免费在线观看| 一本色道久久88综合亚洲精品ⅰ| 久久国产精品网站| 国产欧美精品一区二区三区-老狼| 91久久综合亚洲鲁鲁五月天| 国产精品综合久久久| 成人午夜在线影院| 亚洲精品动漫久久久久| 伊人男人综合视频网| 亚洲人精选亚洲人成在线| 日韩精品免费在线播放| 在线播放亚洲激情| 欧美精品在线视频观看| 在线观看国产成人av片| 日韩精品福利在线| 欧美一级在线亚洲天堂| 欧美激情精品久久久久久蜜臀| 在线日韩av观看| 综合136福利视频在线| 久久成年人免费电影| 久久久久久综合网天天| 国产精品永久免费视频| 亚洲日本aⅴ片在线观看香蕉| 欧美日韩免费区域视频在线观看| 8090理伦午夜在线电影| 亚洲激情第一页| 亚洲国产精品成人一区二区| 97精品一区二区视频在线观看| 欧美黑人性生活视频| 69久久夜色精品国产69乱青草| 欧美黄色三级网站| 中文字幕亚洲一区二区三区五十路| 日韩性生活视频| 国产精品成人久久久久| 91大神在线播放精品| 久久九九有精品国产23| 久久91超碰青草是什么| 亚洲男人第一av网站| 亚洲一区二区三区在线视频| 欧美成aaa人片免费看| 久久久久久九九九| 在线亚洲欧美视频| 亚洲欧洲日本专区| 日韩欧美高清视频| 国产精品专区h在线观看| 国产69精品久久久久久| 欧美激情精品久久久久久大尺度| 欧美性色视频在线| 精品中文字幕在线2019| 91精品国产91久久久久久| 国产精品va在线播放我和闺蜜| 亚洲永久在线观看| 久久久久久久亚洲精品| 欧美日韩一区二区三区在线免费观看| 亚洲人成电影网站色xx| 亚洲人成电影网站色www| 日韩激情第一页| 4438全国亚洲精品在线观看视频| 国产精品揄拍500视频| 欧美亚洲另类制服自拍| 青青草99啪国产免费| 亚洲第一福利网| 成人av.网址在线网站| 日韩精品高清视频| 亚洲乱码国产乱码精品精天堂| 亚洲a区在线视频| 成人亚洲综合色就1024| 欧美日韩免费区域视频在线观看| 亚洲人成网站999久久久综合| 亚洲精品日韩丝袜精品| 久久69精品久久久久久国产越南| 国产精品美女视频网站| 欧美性xxxx| 午夜剧场成人观在线视频免费观看| 日本91av在线播放| 欧美日韩亚洲视频一区| 欧美性受xxxx白人性爽| 亚洲欧美精品suv| 久久频这里精品99香蕉| 亚洲综合自拍一区| 91亚洲精品久久久| 欧美日韩亚洲高清| 96精品久久久久中文字幕| 91九色国产社区在线观看| 欧美电影免费观看电视剧大全| 亚洲成人av片| 亚洲视屏在线播放| 久久久久久久久久国产精品| 亚洲福利在线看| 欧美精品在线极品| 人人澡人人澡人人看欧美| 日韩在线视频免费观看高清中文| 亚洲第一国产精品| 136fldh精品导航福利| 亚洲性xxxx| 亚洲成人精品视频| 成人黄在线观看| 久久国产天堂福利天堂| 97在线日本国产| 91麻豆桃色免费看| 日韩有码在线观看| 国产精品一久久香蕉国产线看观看| 国产精品一区二区女厕厕| 亚洲伦理中文字幕| 久久激情视频免费观看| 精品人伦一区二区三区蜜桃网站| 在线观看亚洲区| 亚洲视屏在线播放| 成人激情黄色网| 欧美二区乱c黑人| 夜夜狂射影院欧美极品| 欧美国产视频日韩| 668精品在线视频| 国产91精品不卡视频| 992tv成人免费视频| 国产精品毛片a∨一区二区三区|国| 国产精品 欧美在线| 久久亚洲精品国产亚洲老地址| 国产免费亚洲高清| 久久影院资源站| 日韩成人av网| 日韩中文字幕网| 亚洲黄色www| 国产精品福利在线| 中文字幕日韩欧美在线| 91精品久久久久久久久中文字幕| 国产成人精品免高潮在线观看| 亚洲福利视频专区| 色婷婷久久av| 97超碰色婷婷| 国内精品伊人久久| 国产日本欧美视频| 国产精品视频在线观看| 国产黑人绿帽在线第一区| 日韩视频免费观看| 在线视频免费一区二区| 福利一区视频在线观看| 91精品国产乱码久久久久久久久| 欧美日韩在线另类| 亚洲欧美激情精品一区二区| 日韩av有码在线| 97色在线视频观看| 91精品国产自产在线观看永久| 黄色一区二区在线| 亚洲视频自拍偷拍| 午夜免费日韩视频| 美女福利视频一区| 国产精品白嫩美女在线观看| 亚洲美女免费精品视频在线观看| 色婷婷综合久久久久| 欧美日韩免费在线观看| 91免费看片在线| 中文字幕免费国产精品| 日韩亚洲国产中文字幕| 国产主播欧美精品| 亚洲成人激情小说| 中文字幕精品久久久久| 日韩视频在线一区| 日本精品视频网站|