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

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

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

2019-11-14 11:14:52
字體:
來源:轉載
供稿:網友

最近在看《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
国产精品久久久久久久久久小说| 久久久精品国产亚洲| 国产性色av一区二区| 国产精品爱啪在线线免费观看| 韩国日本不卡在线| 色妞色视频一区二区三区四区| 88国产精品欧美一区二区三区| 亚洲日韩中文字幕| 国产精品一区二区久久精品| 日韩视频免费观看| 欧美高清视频在线| 欧美高清在线观看| 精品性高朝久久久久久久| 日韩亚洲综合在线| 欧美中文在线免费| 国产精品老女人精品视频| 亚洲男人av在线| 亚洲精品国精品久久99热一| 欧美—级高清免费播放| 深夜精品寂寞黄网站在线观看| 久久伊人精品视频| 久热99视频在线观看| 亚洲一区二区三区香蕉| 91精品久久久久久久久不口人| 精品无人区太爽高潮在线播放| 成人免费在线视频网址| 国产丝袜一区二区| 国产精品av在线播放| 欧美激情视频在线| 亚洲福利在线观看| 影音先锋日韩有码| 欧美男插女视频| 91久久国产婷婷一区二区| 亚洲影院色无极综合| 国产精品美女主播| 欧美电影免费观看大全| 亚洲欧美另类人妖| 一区二区三区四区精品| 日韩欧美高清视频| 97精品国产aⅴ7777| 91国产美女视频| 国产午夜精品久久久| 亚洲影院高清在线| 国产不卡精品视男人的天堂| 亚洲午夜精品视频| 亚洲精品乱码久久久久久金桔影视| 91精品国产综合久久香蕉| 91九色在线视频| 最近2019中文字幕在线高清| 久久精品视频网站| 日韩精品一区二区视频| 按摩亚洲人久久| 中文字幕在线观看日韩| 国产精品视频久| 日韩久久午夜影院| 欧美精品一区二区三区国产精品| 97国产suv精品一区二区62| 亚洲精品久久久久久久久久久久久| 欧美日韩激情小视频| 亚洲男人天天操| 成人激情综合网| 国产亚洲精品美女久久久| 国产精品欧美在线| 欧美日韩免费区域视频在线观看| 久久免费福利视频| 91视频88av| 久久中文字幕视频| 在线视频亚洲欧美| 欧美激情精品久久久久久大尺度| 97**国产露脸精品国产| 欧美老女人xx| 成人午夜黄色影院| 亚洲欧美成人精品| 欧美激情网友自拍| 在线亚洲国产精品网| 久久免费精品视频| 国产一区二区三区四区福利| 欧美一区二区三区艳史| 欧美激情2020午夜免费观看| 久久综合久久美利坚合众国| 亚洲va欧美va国产综合剧情| 国产成人avxxxxx在线看| 国产精品女人久久久久久| 欧美成人午夜激情在线| 这里精品视频免费| 成人国产精品一区二区| 久久久久久久久久婷婷| 久久精品国产一区| 综合国产在线视频| 555www成人网| 国产香蕉97碰碰久久人人| 国产精品久久久久久久久久尿| 日本成人黄色片| 亚洲男人的天堂网站| 亚洲新中文字幕| 日韩成人中文电影| 欧美成在线视频| 蜜臀久久99精品久久久无需会员| 日韩在线观看免费全集电视剧网站| 国产精品人成电影| 亚洲第一综合天堂另类专| 欧美福利在线观看| 亚洲国产精品专区久久| 日本不卡免费高清视频| 成人免费在线视频网站| 欧美成人激情在线| 亚洲精品日韩av| 精品中文字幕在线2019| 免费不卡欧美自拍视频| 国产视频丨精品|在线观看| 成人欧美在线视频| 欧美一级电影在线| 91成人国产在线观看| 精品中文字幕在线观看| 日韩免费观看网站| 欧美激情免费看| 91精品啪在线观看麻豆免费| 国产美女精品视频| 成人做爰www免费看视频网站| 亚洲品质视频自拍网| www.欧美精品| 亚洲黄色av女优在线观看| 欧洲亚洲妇女av| 日韩免费观看网站| 中文字幕日韩欧美在线视频| 欧美中文在线字幕| 精品久久久久久中文字幕一区奶水| 欧美在线中文字幕| 欧美成人黑人xx视频免费观看| …久久精品99久久香蕉国产| 亚洲美女在线视频| 久久久99久久精品女同性| 一区国产精品视频| 国产精品视频色| 国产精品扒开腿做爽爽爽的视频| 日韩美女免费视频| 一区二区欧美激情| 久久人人爽人人爽人人片av高请| 久久激情视频免费观看| 亚洲石原莉奈一区二区在线观看| 亚洲国产97在线精品一区| 欧美极品美女视频网站在线观看免费| 精品偷拍一区二区三区在线看| 日韩专区中文字幕| 国产偷亚洲偷欧美偷精品| 国内精品免费午夜毛片| 97国产suv精品一区二区62| 8090理伦午夜在线电影| 色www亚洲国产张柏芝| 另类少妇人与禽zozz0性伦| 亚洲最新av网址| 中文字幕在线观看日韩| 一区二区三区 在线观看视| 国产亚洲一区精品| 国产在线98福利播放视频| 国产一区二区三区在线观看视频| 日韩va亚洲va欧洲va国产| 国产精品日韩专区| 日韩精品中文字幕有码专区| 精品露脸国产偷人在视频| 日韩精品免费一线在线观看| 国产在线观看精品| 国产一区二区三区在线观看视频| 久久夜色精品国产欧美乱|