Spring------自动化装配Bean(一)
一、创建 CompactDisc接口和SgetPeppers实现类
CompactDisc接口方法为播放。SgtPeppers实现CompactDisc接口。
package soundsystem;
public interface CompactDisc {
void play();
}
package soundsystem; import org.springframework.stereotype.Component;
//component为spring中bean扫描标识
@Component
public class SgtPeppers implements CompactDisc { private String title = "歌德";
private String artist = "gede"; public void play() {
System.out.println("Playing " + title + " by " + artist);
} }
二、启用spring组件扫描
1、通过java配置启用
添加 @Configuration @ComponentScan 两个注解即可。
【注】使用ComponentScan时,若配置文件和bean在同一个包,省略基础包备注也可以。
package soundsystem;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration; @Configuration
@ComponentScan("soundsystem")
public class JavaConfig { }
2、通过xml配置启用:<context:component-scan base-package="soundsystem"></context:component-scan> 如果没有自动提示或者报错,在namespace中添加context配置
<?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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd"> <context:component-scan base-package="soundsystem"></context:component-scan> </beans>
三、编写测试类,并运行
1、创建test包,分别通过java配置和xnl配置实现测试
java配置为:AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(soundsystem.JavaConfig.class);
xml配置为:ClassPathXmlApplicationContext context =new ClassPathXmlApplicationContext("applicationContext.xml");
package test; import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import soundsystem.CompactDisc;
import soundsystem.SgtPeppers; public class Test {
public static void main(String[] args) {
//基于java类中配置上下文
//AnnotationConfigApplicationContext context =
new AnnotationConfigApplicationContext(soundsystem.JavaConfig.class);
//基于xml配置上下文
ClassPathXmlApplicationContext context =
new ClassPathXmlApplicationContext("applicationContext.xml"); CompactDisc cd=context.getBean(SgtPeppers.class);
cd.play();
}
}
四、补充说明
1、spring中设置bean的id有两种方式,一是用户给出,二是系统自己生成默认id(默认将类名首字母变成小写作为bean的id)。
用户常用指定id方法为:
@Component("id")
//也可以使用named属性
@Named(“id”)
2、关于组件扫描的基础包,上面提到部分,指定单个基础包,当有多个基础包需要扫描时使用basePackages属性。
@ComponentScan(basePackages={"soundsystem","test"})
3、添加@Autowired注解实现自动装配。添加接口MediaPlayer和实现类CDPlayer。修改Test测试类
package soundsystem;
public interface MediaPlayer {
void play(); }
package soundsystem;
import org.springframework.beans.factory.annotation.Autowired;
public class CDPlayer implements MediaPlayer {
private CompactDisc cd;
@Autowired
public CDPlayer(CompactDisc cd) {
this.cd = cd;
}
public void play() {
cd.play();
}
}
public class Test {
public static void main(String[] args) {
//基于java类中配置上下文
//AnnotationConfigApplicationContext context =
new AnnotationConfigApplicationContext(soundsystem.JavaConfig.class);
//基于xml配置上下文
ClassPathXmlApplicationContext context =
new ClassPathXmlApplicationContext("applicationContext.xml");
CompactDisc cd=context.getBean(SgtPeppers.class);
cd.play();
MediaPlayer player=context.getBean(CDPlayer.class);
player.play();
}
}
4、备注CDPlayer重写构造方法,通过Autowired自动添加构造方法CD对象,调用CD播放。
Spring------自动化装配Bean(一)的更多相关文章
- Spring自动化装配bean
1. 场景 用CD(Compact disc)和CD播放器(CDPlayer)阐述DI(依赖注入). 如果不将CD插入(注入)到CDPlayer中,那么CDPlayer其实没有太大的用处,所以,可以这 ...
- Spring 之自动化装配 bean 尝试
[Spring之自动化装配bean尝试] 1.添加dependencies如下所示(不是每一个都用得到 <dependencies> <dependency> <grou ...
- 第2章—装配Bean—自动化装配Bean
自动化装配Bean 2.1.Spring配置可选方案 装配是依赖注入DI的本质,Spring提供了以下三种注入的装配机制: 在XMl中进行显式配置 在java中进行显式配置 隐式的Bean发现机制 ...
- 二、spring中装配bean
在spring框架中提供了三种 bean的装配方式,当然这三种装配方式是可以灵活的进行组合使用的,项目中使用最多的是自动装配bean的方式,也就是通过注解的方式进行bean的装配,一下是四种装配方式的 ...
- Spring 自动装配 Bean
Spring3系列8- Spring 自动装配 Bean 1. Auto-Wiring ‘no’ 2. Auto-Wiring ‘byName’ 3. Auto-Wiri ...
- Spring自动装配Bean详解
1. Auto-Wiring ‘no’ 2. Auto-Wiring ‘byName’ 3. Auto-Wiring ‘byType 4. Auto-Wirin ...
- Spring学习系列(二) 自动化装配Bean
一.Spring装配-自动化装配 @Component和@ComponentScan 通过spring注解(@Component)来表明该类会作为组件类,并告知Spring要为这类创建bean,不过组 ...
- Spring入门(二):自动化装配bean
Spring从两个角度来实现自动化装配: 组件扫描(component scanning):Spring会自动发现应用上下文中需要创建的bean. 自动装配(autowiring):Spring会自动 ...
- Spring容器装配Bean的三种方式
欢迎查看Java开发之上帝之眼系列教程,如果您正在为Java后端庞大的体系所困扰,如果您正在为各种繁出不穷的技术和各种框架所迷茫,那么本系列文章将带您窥探Java庞大的体系.本系列教程希望您能站在上帝 ...
- 自动化装配Bean
一.Spring装配-自动化装配 @Component和@ComponentScan 通过spring注解(@Component)来表明该类会作为组件类,并告知Spring要为这类创建bean,不过组 ...
随机推荐
- A Practical Introduction to Blockchain with Python
A Practical Introduction to Blockchain with Python // Adil Moujahid // Data Analytics and more http: ...
- cocos2d-x交叉编译到安卓
ccocos2d-x是一个基于MIT协议的开源框架,用于构建游戏.应用程序和其它图形界面交互应用. 它的最大特点就是跨平台性,支持IOS, Android.Windows, WindowsPhone等 ...
- 秒懂单链表及其反转(reverse)
什么是链表,这种数据结构是由一组Node组成的,这群Node一起表示了一个序列.链表是最普通,最简单的数据结构(物理地址不连续),它是实现其他数据结构如stack, queue等的基础. 链表比起数组 ...
- HDU 1081:To The Max
To The Max Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- 计算机学院大学生程序设计竞赛(2015’12)Happy Value
Happy Value Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...
- 【NOI 2015】软件包管理器
[题目链接] 点击打开链接 [算法] 树链剖分,子树的DFS序也是连续的一段 要注意细节! [代码] #include<bits/stdc++.h> using namespace std ...
- HBase之四--(2):spring hadoop 访问hbase
1. 环境准备: Maven Eclipse Java Spring 2. Maven pom.xml配置 <dependency> <groupId>org.apache ...
- node安装升级npm
安装npm npm上有很多优秀的nodejs包,来解决常见的一些问题,比如用node-mysql,就可以方便通过nodejs链接到mysql,进行数据库的操作 在开发过程往往会需要用到其他的包,使用n ...
- 002--linux基础命令
退出终端命令:exit 关闭Linux系统的命令:init 0 切换虚拟终端的方法:Ctrl+Alt+F[1-6] who命令 :查看有多少个终端打开着 whoami命令:获取当前用户名 date命令 ...
- HDU 6092:Rikka with Subset(dp)
分析 很多个较小的数字可以随机组合成较大的数字,所以B数组从小到大开始遍历,除了空集,最小的那个存在的个数对应的数字必然是a数组中的数字. 每求出这一部分之后,更新后续的B序列. 分析完后,主要的难点 ...