前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring------自动化装配Bean(一) 一、创建 CompactDisc接口和SgetPeppers实现类二、启用spring组件扫描三、编写测试类,并运行 四、补充说明

Spring------自动化装配Bean(一) 一、创建 CompactDisc接口和SgetPeppers实现类二、启用spring组件扫描三、编写测试类,并运行 四、补充说明

作者头像
用户2417870
发布2019-09-18 11:41:00
4750
发布2019-09-18 11:41:00
举报
文章被收录于专栏:g歌德ag歌德a

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

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

代码语言:javascript
复制
1 package soundsystem;
2 
3 public interface CompactDisc {
4   void play();
5 
6 }
代码语言:javascript
复制
 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在同一个包,省略基础包备注也可以。

代码语言:javascript
复制
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配置

代码语言:javascript
复制
<?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");

代码语言:javascript
复制
 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方法为:

代码语言:javascript
复制
@Component("id")
//也可以使用named属性
@Named(“id”)

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

代码语言:javascript
复制
1 @ComponentScan(basePackages={"soundsystem","test"})

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

代码语言:javascript
复制
1 package soundsystem;
2 public interface MediaPlayer {
3   void play();
4 
5 }
代码语言:javascript
复制
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();
      }
}
代码语言:javascript
复制
 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播放。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、创建 CompactDisc接口和SgetPeppers实现类
  • 二、启用spring组件扫描
  • 三、编写测试类,并运行
  • 四、补充说明
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档