当前位置: 首页 > news >正文

网站宣传方案室内设计学校排名榜

网站宣传方案,室内设计学校排名榜,陇西做网站的公司,正规网店代运营公司一、简介 ​ Spring容器负责创建应用程序中的bean并通过DI来协调这些对象之间的关系。Spring具有非常大的灵活性,它提供了三种主要的装配机制: 在XML中进行显示配置;在Java中进行显示配置;隐式的bean发现机制和自动装配。 二、…

一、简介

​ Spring容器负责创建应用程序中的bean并通过DI来协调这些对象之间的关系。Spring具有非常大的灵活性,它提供了三种主要的装配机制:

  • 在XML中进行显示配置;
  • 在Java中进行显示配置;
  • 隐式的bean发现机制和自动装配。

二、在XML中进行显示配置

1. 声明一个简单的bean

1. 创建CD接口

public interface CompactDisc {void play();
}

2. 创建NowAndThen类

public class NowAndThen implements CompactDisc{private String title = "Now And Then.";private String artist = "The Beatles";@Overridepublic void play() {System.out.println("Playing " + title + " by " + artist);}}

3. 在bean.xml文件中配置

<!--  通过class属性来声明一个简单的bean,此时因为没有指定ID,bean的ID将会是com.shiftycat.soundsystem.NowAndThen#0  -->
<bean class="com.shiftycat.soundsystem.NowAndThen"/>
<!--  使用id属性可以用来指定ID  -->
<bean id="CompactDisc" class="com.shiftycat.soundsystem.NowAndThen"/>

4. 进行测试

@Test
public void compactDiscTest() {ClassPathXmlApplicationContext classPathXmlApplicationContext =new ClassPathXmlApplicationContext("bean.xml");CompactDisc compactDisc = classPathXmlApplicationContext.getBean(CompactDisc.class);compactDisc.play();
}

5. 测试结果

Playing Now And Then. by The Beatles

2. 借助构造器注入初始化bean

​ 构造器注入有两种方案:

  • constructor-arg元素
  • 使用Spring 3.0所引入的c-命名空间

1. 创建CD接口

public interface CompactDisc {void play();
}

2. 创建NowAndThen类

public class NowAndThen implements CompactDisc{private String title = "Now And Then.";private String artist = "The Beatles";@Overridepublic void play() {System.out.println("Playing " + title + " by " + artist);}}

3. 创建MediaPlayer接口

public interface MediaPlayer {void play();
}

4. 创建CDPlayer类

public class CDPlayer implements MediaPlayer{private CompactDisc cd;// 构造器注入public CDPlayer(CompactDisc cd) {this.cd = cd;}@Overridepublic void play() {System.out.println("Loading...");cd.play();}
}

5. 在bean.xml文件中配置

<bean id="CompactDisc" class="com.shiftycat.soundsystem.NowAndThen"/>\
<!--  第一种配置方案:`constructor-arg`元素  -->
<bean id="cdPlayer" class="com.shiftycat.soundsystem.CDPlayer"><constructor-arg ref="CompactDisc"/>
</bean>
<!--  第二种配置方案:使用Spring 3.0所引入的c-命名空间  -->
<!--  c:构造器参数名-ref=“要注入的bean的ID”  -->
<bean id="cdPlayer" class="com.shiftycat.soundsystem.CDPlayer" c:cd-ref="CompactDisc"/>
<!--  或者将参数的名称替换为"_0"或者"_"  -->
<bean id="cdPlayer" class="com.shiftycat.soundsystem.CDPlayer" c:_0-ref="CompactDisc" />
<bean id="cdPlayer" class="com.shiftycat.soundsystem.CDPlayer" c:_-ref="CompactDisc" />

6. 进行测试

@Test
public void cdPlayerTest() {ClassPathXmlApplicationContext classPathXmlApplicationContext =new ClassPathXmlApplicationContext("bean.xml");CDPlayer cdPlayer = classPathXmlApplicationContext.getBean(CDPlayer.class);cdPlayer.play();}

7. 测试结果

Loading...
Playing Now And Then. by The Beatles
将字面量注入到构造器中

1. 创建BlackDisc类

public class BlackDisc implements CompactDisc{private String title;private String artist;public BlackDisc(String title, String artist) {this.title = title;this.artist = artist;}@Overridepublic void play() {System.out.println("Playing " + title + " by " + artist);}
}

2. 在bean.xml中进行配置

<bean id="blackDisc" class="com.shiftycat.soundsystem.BlackDisc"><constructor-arg value="Now And Then." /><constructor-arg value="The Beatles" />
</bean><bean id="blackDisc" class="com.shiftycat.soundsystem.BlackDisc"c:title="Now And Then."c:artist="The Beatles"
/><bean id="blackDisc" class="com.shiftycat.soundsystem.BlackDisc"c:_0="Now And Then."c:_1="The Beatles"
/>

3. 进行测试

@Test
public void blackDiscTest() {ClassPathXmlApplicationContext classPathXmlApplicationContext =new ClassPathXmlApplicationContext("bean.xml");BlackDisc blackDisc = classPathXmlApplicationContext.getBean(BlackDisc.class);blackDisc.play();
}

4. 测试结果

Playing Now And Then. by The Beatles

P.S. 装配集合

public class BlackDisc implements CompactDisc {private String title;private String artist;private List<String> tracks;public BlackDisc(String title, String artist, List<String> tracks) {this.title = title;this.artist = artist;this.tracks = tracks;}@Overridepublic void play() {System.out.println("Playing " + title + " by " + artist);for (String track : tracks) {System.out.println("-Track: " + track);}}
}
<bean id="blackDisc" class="com.shiftycat.soundsystem.BlackDisc"><constructor-arg value="Now And Then." /><constructor-arg value="The Beatles" /><constructor-arg><list><value>I know it's true</value><value>It's all because of you</value><value>And if I make it through</value><value>It's all because of you</value><value>And now and then</value></list></constructor-arg>
</bean>
Playing Now And Then. by The Beatles
-Track: I know it's true
-Track: It's all because of you
-Track: And if I make it through
-Track: It's all because of you
-Track: And now and then

3. 设置属性初始化bean

一般而言,对于强依赖使用构造器注入,对可选性的依赖使用属性注入。

1. 在CDPlayer类中设置setter方法

public class CDPlayer implements MediaPlayer{private CompactDisc cd;public void setCompactDisc(CompactDisc cd) {this.cd = cd;}@Overridepublic void play() {System.out.println("Loading...");cd.play();}
}

2. 在bean.xml文件中进行配置

<!--  可以使用property进行配置-->
<bean id="cdPlayer" class="com.shiftycat.soundsystem.CDPlayer"><property name="compactDisc" ref="compactDisc"/>
</bean>
<!--  或者使用p-命名空间性配置-->
<bean id="cdPlayer" class="com.shiftycat.soundsystem.CDPlayer"p:compactDisc-ref="compactDisc"/>

3. 进行测试

@Test
public void cdPlayerTest() {ClassPathXmlApplicationContext classPathXmlApplicationContext =new ClassPathXmlApplicationContext("bean.xml");CDPlayer cdPlayer = classPathXmlApplicationContext.getBean(CDPlayer.class);cdPlayer.play();
}

4. 测试结果

Loading...
Playing Now And Then. by The Beatles
将字面量注入到属性中

1. 在WhiteDisc类中设置setter方法

public class WhiteDisc implements CompactDisc{private String title;private String artist;private List<String> tracks;public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getArtist() {return artist;}public void setArtist(String artist) {this.artist = artist;}public List<String> getTracks() {return tracks;}public void setTracks(List<String> tracks) {this.tracks = tracks;}@Overridepublic void play() {System.out.println("Playing " + title + " by " + artist);for (String track : tracks) {System.out.println("-Track: " + track);}}
}

2. 在bean.xml文件中进行配置

<bean id="whileDisc" class="com.shiftycat.soundsystem.WhiteDisc"><property name="artist" value="Now And Then."/><property name="title" value="The Beatles" /><property name="tracks"><list><value>I know it's true</value><value>It's all because of you</value><value>And if I make it through</value><value>It's all because of you</value><value>And now and then</value></list></property>
</bean>
<!--或者-->
<bean id="whileDisc" class="com.shiftycat.soundsystem.WhiteDisc"p:artist="Now And Then."p:title="The Beatles"><property name="tracks"><list><value>I know it's true</value><value>It's all because of you</value><value>And if I make it through</value><value>It's all because of you</value><value>And now and then</value></list></property>
</bean>
<!--或者-->
<bean id="whileDisc" class="com.shiftycat.soundsystem.WhiteDisc"p:artist="Now And Then."p:title="The Beatles"p:tracks-ref="tracks"
>
</bean><util:list id="tracks"><value>I know it's true</value><value>It's all because of you</value><value>And if I make it through</value><value>It's all because of you</value><value>And now and then</value>
</util:list>

3. 进行测试

@Test
public void whiteDiscTest() {ClassPathXmlApplicationContext classPathXmlApplicationContext =new ClassPathXmlApplicationContext("bean.xml");WhiteDisc whiteDisc = classPathXmlApplicationContext.getBean(WhiteDisc.class);whiteDisc.play();
}

4. 测试结果

Playing The Beatles by Now And Then.
-Track: I know it's true
-Track: It's all because of you
-Track: And if I make it through
-Track: It's all because of you
-Track: And now and then

三、在Java中进行显式配置

1. 声明简单的bean

1. 创建配置类

@Configuration
public class CDPlayerConfig {}

2. 声明简单的bean

@Configuration
public class CDPlayerConfig {@Beanpublic CompactDisc nowAndThen() {return new nowAndThen();}}

2. 借助JavaConfig实现注入

@Configuration
//@ComponentScan(basePackages = "com.shiftycat.soundsystem") //在Spring中启动组件扫描,默认扫描该类所在包及这个包下的所有子包
public class CDPlayerConfig {@Beanpublic CompactDisc nowAndThen() {return new nowAndThen();}// 方法一: 最简单的方法是引用创建bean的方法@Beanpublic CDPlayer cdPlayer() {return new CDPlayer(nowAndThen());}// 方法二: 请求一个CompactDisc作为参数,将CompactDisc注入到CDPlayer的构造器中,// 而且不用明确引用CompactDisc的@Bean方法。@Beanpublic CDPlayer cdPlayer(CompactDisc compactDisc) {return new CDPlayer(compactDisc);}// 方法三: 通过setter方法注入CompactDisc@Beanpublic CDPlayer cdPlayer(CompactDisc compactDisc) {CDPlayer  cdPlayer = new CDPlayer();cdPlayer.setCd(compactDisc);return cdPlayer;}
}

四、隐式的bean发现机制和自动装配

1. 自动化装配bean

​ Spring通过两个方面实现自动化装配:

  • 组件扫描(component scanning):Spring会自动发现应用上下文所创建的bean。
  • 自动装配(autowiring):Spring自动满足bean之间的依赖。

2. 步骤

1. 创建可被发现的bean

public interface CompactDisc {void play();
}public class nowAndThen implements CompactDisc{private String title = "Now And Then.";private String artist = "The Beatles";@Overridepublic void play() {System.out.println("Playing " + title + " by " + artist);}
}public interface MediaPlayer {void play();
}

2. 开启组件扫描

@Configuration
@ComponentScan(basePackages = "com.shiftycat.soundsystem") //在Spring中启动组件扫描,默认扫描该类所在包及这个包下的所有子包
public class CDPlayerConfig {}
<?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:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd><context:component-scan base-package="com.shiftycat.soundsystem" />
</beans>
@Autowired
private CompactDisc compactDisc;@Test
public void compactDiscTest() {compactDisc.play();
}
Playing Now And Then. by The Beatles

3. 通过为bean添加注解实现自动装配

不管是构造器、Setter方法还是其他的方法,Spring都会尝试满足方法参数上所声明的依赖。假如有且只有一个bean匹配以来需求的话,那么这个bean将会被装配进来。
@Component
public class CDPlayer implements MediaPlayer{private CompactDisc cd;@Autowiredpublic CDPlayer(CompactDisc cd) {this.cd = cd;}@Autowiredpublic void setCd(CompactDisc cd) {this.cd = cd;}@Overridepublic void play() {System.out.println("Loading...");cd.play();}
}
@Autowired
private CDPlayer cdPlayer;
@Test
public void cdPlayerTest() {cdPlayer.play();
}
Loading...
Playing Now And Then. by The Beatles

五、导入和混合配置

1. 在JavaConfig中引用XML配置

​ 假如现存由两个config文件和一个XML文件,如何实现在一个JavaConfig文件中引用两个config文件并且在其中引入XML配置文件。

1. 配置文件1

public interface CompactDisc {void play();
}@Component
public class NowAndThen implements CompactDisc {private String title = "Now And Then.";private String artist = "The Beatles";@Overridepublic void play() {System.out.println("Playing " + title + " by " + artist);}
}@Configuration
public class CDConfig {@Beanpublic CompactDisc compactDisc() {return new NowAndThen();}
}

2. 配置文件2

public interface MediaPlayer {void play();
}@Component
public class CDPlayer implements MediaPlayer {private CompactDisc cd;public CDPlayer(CompactDisc cd) {this.cd = cd;}@Overridepublic void play() {System.out.println("Loading...");cd.play();}
}@Configuration
//@Import(CDConfig.class)
public class CDPlayerConfig {@Beanpublic CDPlayer cdPlayer(CompactDisc compactDisc) {return new CDPlayer(compactDisc);}
}

3. 配置文件3

public class BlackDisc implements CompactDisc {private String title;private String artist;private List<String> tracks;public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getArtist() {return artist;}public void setArtist(String artist) {this.artist = artist;}public List<String> getTracks() {return tracks;}public void setTracks(List<String> tracks) {this.tracks = tracks;}@Overridepublic void play() {System.out.println("Playing " + title + " by " + artist);for (String track : tracks) {System.out.println("-Track: " + track);}}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:c="http://www.springframework.org/schema/c"xmlns:p="http://www.springframework.org/schema/p"xmlns:util="http://www.springframework.org/schema/util"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/utilhttp://www.springframework.org/schema/util/spring-util.xsd"><bean id="blackDisc" class="com.shiftycat.importAndBlend.BlackDisc"p:artist="Now And Then."p:title="The Beatles"p:tracks-ref="tracks"></bean><util:list id="tracks"><value>I know it's true</value><value>It's all because of you</value><value>And if I make it through</value><value>It's all because of you</value><value>And now and then</value></util:list></beans>

4. 主要的Config文件

@Configuration
@Import({CDConfig.class, CDPlayerConfig.class})
@ImportResource("classpath:cd-config.xml")
public class SoundSystemConfig {}

5. 进行测试

@Test
public void JavaConfigTest() {AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();context.register(SoundSystemConfig.class);context.refresh();System.out.println("BlackDisc: ");CompactDisc blackDisc = context.getBean(BlackDisc.class);blackDisc.play();System.out.println("\nnowAndThen: ");CompactDisc nowAndThen = context.getBean(NowAndThen.class);nowAndThen.play();System.out.println("\nCDPlayer: ");CDPlayer player = context.getBean(CDPlayer.class);player.play();
}

6. 测试结果

BlackDisc: 
Playing The Beatles by Now And Then.
-Track: I know it's true
-Track: It's all because of you
-Track: And if I make it through
-Track: It's all because of you
-Track: And now and thennowAndThen: 
Playing Now And Then. by The BeatlesCDPlayer: 
Loading...
Playing Now And Then. by The Beatles

2. 在XML配置中引用JavaConfig

​ 与在JavaConfig中引用XML配置一样,我们可以使用更高层次的配置文件,这个文件不声明任何的bean,只是负责将两个或更多的配置组合起来。

<?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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><!--  用来导入JavaConfig类配置到Xml文件中  --><bean class="com.shiftycat.importAndBlend.CDConfig" /><!--  用来导入xml文件配置  --><import resource="cd-config.xml"/></beans>

《Spring实战(第4版)》

http://www.15wanjia.com/news/184115.html

相关文章:

  • 天河建网站的公司广州励网网站建设网络公司
  • 重庆专业的网站建设公司电子商务平台经营者向平台内经营者收取费用
  • 诸暨企业网站建设17网站一起做网店普
  • 聊城做网站比较不错的公司indesign做网站
  • 青岛做外贸网站建设广安住房和城乡建设厅网站
  • 网站建设需要知道什么软件手机上怎么设计广告图片
  • 智能建站系统排行青岛 公司 网站建设价格
  • 有商家免费建商城的网站吗中国婚纱
  • 网站建设项目流程手机网站制作报价
  • 汉川市建设局网站高端网站建设的市场分析
  • 韶关市住房和城乡建设部网站怎么重新打开wordpress
  • 网站建设到哪个店做电商流量推广
  • 贵阳做网站电话南庄做网站
  • 如何做企业网站php北京城建十建设工程有限公司网站
  • 网站开发方向c语言禁止浏览器访问一个网站怎么做
  • 英文站 wordpress seo优化WordPress颜色筛选插件
  • 制作网站需要的技术wordpress 回复显示
  • 网站tag设计网站建设面板
  • 个人网站建设与管理工作总结自己怎么做网站空间
  • 辽阳网站建设公司深圳俄语网站建设
  • 强比网站建设做网站用php还是node
  • 申请网站空间是申请域名吗wordpress制作友情链接页面
  • 网络公司的手机网站龙华企业网站建设
  • 网站公司说我们做的网站服务器不够用网站域名建设
  • 电商网站 厦门楼盘网站开发报价
  • dede如何设置网站端口梨树县交通建设网站
  • 汽车网站建设工作室丽水网站建设报价
  • 做纸棋的网站做网站 多页面网址怎么弄
  • 微信网站后期运营怎么做360地图下载最新版
  • 做使用的网站有哪些有什么网站可以做代理的