首页 > 编程语言 >spring xml配置中引用java配置不能用ClassPathXmlApplicationContext

spring xml配置中引用java配置不能用ClassPathXmlApplicationContext

时间:2022-12-25 11:35:19浏览次数:51  
标签:xml java spring springframework class v4 org c2 public

现在的目的是想测试在xml配置中引用java配置的bean

CD唱片的接口:

package v4.c2;

public interface CompactDisc {

void play();

}

CD实现类:

package v4.c2;


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);
  }

}

播放器接口

package v4.c2;

public interface MediaPlayer {

  void play();

}

播放器实现类:

package v4.c2;
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();
  }

}

CD配置类:

package v4.c2;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class CDConfig {
  @Bean
  public CompactDisc compactDisc() {
      System.out.println(2222);
    return new SgtPeppers();
  }
}

播放器的配置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 class="v4.c2.CDConfig" />

  <bean id="cdPlayer"
        class="v4.c2.CDPlayer"
        c:cd-ref="compactDisc" />
        
</beans>

注意这里就是在xml配置中引用java配置

<bean class="v4.c2.CDConfig" />

现在用ClassPathXmlApplicationContext测试

package v4.c2;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Boot {

    public static void main(String[] args) {
        ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("v4/c2/cdplayer-config.xml");
        MediaPlayer media = ac.getBean(MediaPlayer.class);
        media.play();
        ac.close();        
    }

}

报错:

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'compactDisc' available

换成AnnotationConfigApplicationContext的方式,要添加一个根配置类:

package v4.c2;

import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.ImportResource;

@Configuration
@ImportResource("classpath:v4/c2/cdplayer-config.xml")
public class SoundSystemConfig {

}

这样测试:

package v4.c2;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class Boot {

    public static void main(String[] args) {

        AnnotationConfigApplicationContext ac =new  AnnotationConfigApplicationContext(SoundSystemConfig.class);
        MediaPlayer media = ac.getBean(MediaPlayer.class);
        media.play();
        ac.close();        
    }

}

成功,输出:

2222
Playing Sgt. Pepper's Lonely Hearts Club Band by The Beatles

标签:xml,java,spring,springframework,class,v4,org,c2,public
From: https://www.cnblogs.com/gong2021/p/17003804.html

相关文章

  • java转汇编查看
    Java反汇编:HSDIS、JITWatchwindwos:https://blog.51cto.com/u_11966318/5374259#githttps://github.com/liuzhengyang/hsdis#让JVM以编译模式执行代码,即JVM会在第......
  • Java中的异常、IO与NIO面试题
    ✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。......
  • Java串口编程
     很久以前写的一个java串口通讯程序,用的是comm.jar。用java搞串口通讯就是用菜刀削水果-虽然也能做到,但是很麻烦。贴下核心类:packagecom.jzdf.odu.serial;importjava.i......
  • Java - 配置Java环境
    aboutJDK是Java语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境,JAVA工具和JAVA基础的类库。JRE(JavaR......
  • Java编程思想8
    第十三章:字符串​由于字符串在我们开发中使用频率是相当高的,本章内容也主要介绍了一些关于字符串常用的API,需要注意的是String对象是不可变的,String类中每一个看起来会修......
  • Java泛型方法
    泛型方法泛型方法,是在调用方法的时候指明泛型的具体类型,定义格式:修饰符<代表泛型的变量>返回值类型方法名(参数){} 例如:/****@paramt传入......
  • Java第08次实验(流与文件)实验报告--网络2112-37号
    第1次实验0.字节流与二进制文件使用DataOutputStream与FileOutputStream将Student对象写入二进制文件students.data二进制文件与文本文件的区别。使用wxMEdit或Visua......
  • 关于spring
    自动装配  按类型  按名称    集合的注入  集合数组的注入    这两个类型不一样......
  • 68篇干货,手把手教你通关 Spring Security!
    SpringSecurity系列前前后后整了68篇文章了,是时候告一个段落了。这两天松哥抽空把该系列的文章整理了一下,做成了一个索引,方便小伙伴们查找。教程地址如下:www.javab......
  • Java编程思想6
    第十一章:持有对象如果一个程序只包含固定数量的且其生命周期都是已知的对象,那么这是一个非常简单的程序。​通常,程序总是根据运行时才知道的某些条件去创建新对象,在此之......