一、创建 CompactDisc接口和SgetPeppers实现类

  CompactDisc接口方法为播放。SgtPeppers实现CompactDisc接口。

1 package soundsystem;
2
3 public interface CompactDisc {
4   void play();
5
6 }

 1 package soundsystem;
 2
 3 import org.springframework.stereotype.Component;
 4 //component为spring中bean扫描标识
 5 @Component
 6 public class SgtPeppers implements CompactDisc {
 7
 8   private String title = "歌德";
 9   private String artist = "gede";
10
11   public void play() {
12     System.out.println("Playing " + title + " by " + artist);
13   }
14
15 }

二、启用spring组件扫描

  1、通过java配置启用

    添加 @Configuration @ComponentScan 两个注解即可。

    【注】使用ComponentScan时,若配置文件和bean在同一个包,省略基础包备注也可以。

1 package soundsystem;
2 import org.springframework.context.annotation.ComponentScan;
3 import org.springframework.context.annotation.Configuration;
4
5 @Configuration
6 @ComponentScan("soundsystem")
7 public class JavaConfig {
8
9 }

  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.xsdhttp://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");

 1 package test;
 2
 3 import org.springframework.context.annotation.AnnotationConfigApplicationContext;
 4 import org.springframework.context.support.ClassPathXmlApplicationContext;
 5 import soundsystem.CompactDisc;
 6 import soundsystem.SgtPeppers;
 7
 8 public class Test {
 9     public static void main(String[] args) {
10     //基于java类中配置上下文
11     //AnnotationConfigApplicationContext context =
12             new AnnotationConfigApplicationContext(soundsystem.JavaConfig.class);
13     //基于xml配置上下文
14     ClassPathXmlApplicationContext context =
15             new ClassPathXmlApplicationContext("applicationContext.xml");
16
17     CompactDisc cd=context.getBean(SgtPeppers.class);
18     cd.play();
19     }
20 }

四、补充说明

  1、spring中设置bean的id有两种方式,一是用户给出,二是系统自己生成默认id(默认将类名首字母变成小写作为bean的id)。

  用户常用指定id方法为:

@Component("id")//也可以使用named属性@Named(“id”)

  2、关于组件扫描的基础包,上面提到部分,指定单个基础包,当有多个基础包需要扫描时使用basePackages属性。

1 @ComponentScan(basePackages={"soundsystem","test"})

  3、添加@Autowired注解实现自动装配。添加接口MediaPlayer和实现类CDPlayer。修改Test测试类

1 package soundsystem;
2 public interface MediaPlayer {
3   void play();
4
5 }

package soundsystem;import org.springframework.beans.factory.annotation.Autowired;public class CDPlayer implements MediaPlayer {private CompactDisc cd;@Autowiredpublic CDPlayer(CompactDisc cd) {this.cd = cd;}public void play() {cd.play();}
}

 1 public class Test {
 2     public static void main(String[] args) {
 3     //基于java类中配置上下文
 4     //AnnotationConfigApplicationContext context =
 5             new AnnotationConfigApplicationContext(soundsystem.JavaConfig.class);
 6     //基于xml配置上下文
 7     ClassPathXmlApplicationContext context =
 8             new ClassPathXmlApplicationContext("applicationContext.xml");
 9     CompactDisc cd=context.getBean(SgtPeppers.class);
10     cd.play();
11     MediaPlayer player=context.getBean(CDPlayer.class);
12     player.play();
13
14     }
15 }

  4、备注CDPlayer重写构造方法,通过Autowired自动添加构造方法CD对象,调用CD播放。

  

转载于:https://www.cnblogs.com/gede/p/10889762.html

Spring------自动化装配Bean(一)相关推荐

  1. Spring 自动化装配Bean

    声明一张cd的接口: public interface CompactDisc {public abstract void play(); } 实现cd接口: @Component("Sgt ...

  2. Spring之装配Bean(一)

    Spring中装配bean的三种主要方式 1.隐式的bean发现机制和自动化装配 组件扫描( component scanning) : Spring会自动发现应用上下文中所创建的bean. 自动装配 ...

  3. spring(2)装配Bean

    [0]README 0)本文部分文字描述转自:"Spring In Action(中/英文版)",旨在review  spring(2)装配Bean 的相关知识: 1)在sprin ...

  4. 第2章—装配Bean—自动化装配Bean

    自动化装配Bean 2.1.Spring配置可选方案 ​ 装配是依赖注入DI的本质,Spring提供了以下三种注入的装配机制: 在XMl中进行显式配置 在java中进行显式配置 隐式的Bean发现机制 ...

  5. Spring笔记——装配Bean

    1.Spring配置的可选方案 在XML中进行显式配置. Java中进行显式配置. 隐式的bean发现机制和自动装配. 2.自动化装配bean Spring从两个角度来实现自动化装配: 组件扫描(co ...

  6. Spring学习系列(二) 自动化装配Bean

    一.Spring装配-自动化装配 @Component和@ComponentScan 通过spring注解(@Component)来表明该类会作为组件类,并告知Spring要为这类创建bean,不过组 ...

  7. Spring入门(二):自动化装配bean

    Spring从两个角度来实现自动化装配: 组件扫描(component scanning):Spring会自动发现应用上下文中需要创建的bean. 自动装配(autowiring):Spring会自动 ...

  8. Spring Bean之JavaConfig自动化装配bean

    一.简介: Spring能够进行自动化的装配,它使用两种方式来进行自动化装配:   1.组件扫描:   Spring会自动发现应用上下文中所创建的bean   2.自动装配:   Spring会自动满 ...

  9. Spring学习之Spring三种装配机制:(一)自动化装配bean

    装配:创建应用组件(对象)之间的协作的行为,这也是Spring依赖注入(DI)的本质. Spring提供了三种装配机制: 隐式的自动装配bean: 通过java代码装配bean(显示): 通XML中装 ...

  10. Spring实战01——自动化装配bean

    自动装配bean 的四种方式: 首先定义一个类,使用@Configuration 标注类成为配置类,然后有下面四种方式: 1.配置类使用@ComponentScan 注解扫描指定包下的类,默认是扫描同 ...

最新文章

  1. Java 依赖注入标准(JSR-330)简介
  2. LCP 01. Guess Numbers 猜数字
  3. 监听以太网(四) Packet32函数SDK
  4. PHP 分布式集群中session共享问题以及session有效期的设置
  5. leetcode 530. 二叉搜索树的最小绝对差(中序遍历)
  6. ML、DL、CNN学习记录2
  7. 爬虫笔记(十)——学会使用Fiddler
  8. 支持下一代分布式应用链开发的区块链服务互联网
  9. discuz 模板php代码,自定义HTML模板DIY支持PHP代码解析
  10. 如何制作拼图?教你三步快速拼接图片
  11. Matlab/Simulink 自动代码生成 基于模型设计学习教程(1)---- 环境配置
  12. 共阴数码管显示0~9的数字
  13. 用python画靶盘九个_““python程序设计:画一个射箭运动所用的箭靶.从小到大分别黄,红,蓝,黑,白色的同...
  14. 系统调用【简单总结】
  15. 基于 Windows系统的 KingbaseES 数据库软件安装指南(3. 安装前准备工作)
  16. 数据库系统概论--第六章 关系数据理论
  17. android 开发过程中涉及到的清除缓存操作
  18. xcode/osx官方直接下载地址(离线下载)
  19. php代码加密tp5,TP5.1写接口用来加密解密的方法
  20. c语言程序学生籍贯信息记录,c语言程序学生籍贯信息记录簿设计.doc

热门文章

  1. linkedin上看到的CRM团队信息
  2. SAP Gigya里类似Netweaver里SAP_ALL的权限
  3. SAP CRM my task 6个roundtrip的原理讲解
  4. CFX计算报错和相应解决办法(浮点错误等-持续更新)
  5. c远程连接mysql数据库_MySQL数据库远程连接开启方法
  6. java 输入流关闭顺序_JAVA的节点流和处理流以及流的关闭顺序
  7. flex java red5_使用 Flex 和Java servlets 将文件上传到 RED5 服务器的步骤
  8. Hive中实现有序,有序concat拼接,有序集合,hive方法操作命令,与自带方法列表
  9. python三维数据转换成二维_5大Python可视化库到底选哪个好?一篇文章搞定从选库到教学...
  10. oracle重启监听报01106,oracle 监听重启