本文参考自:《Spring实战(第4版)》
一、初始化时java注解引用xml中配置的bean
关键注解:@ImportResource,下面举例CD播放器配置中引入CD的配置信息
CD播放器配置类:
/**
* @Author river66
* @Date 2020/4/4 22:21
* <p>
* CD播放器配置类
*/
@Configuration
@ImportResource("classpath:cd-config.xml")
public class CDPlayerConfig {
@Bean
public CDPlayer cdPlayer(CD cd) {
return new CDPlayer(cd);
}
}
CD类配置文件(根类路径):cd-config.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">
<bean class="com.river.boot.bean.JayChouCD">
<property name="albumName" value="《七里香》"/>
</bean>
</beans>
CD接口:
/**
* @Author river66
* @Date 2020/4/4 22:18
* <p>
* CD 唱片接口
*/
public interface CD {
void play();
}
具体的CD类:
import com.river.boot.interfaces.CD;
import lombok.Data;
/**
* @Author river66
* @Date 2020/4/4 22:26
* <p>
* 周杰伦唱片
*/
@Data
public class JayChouCD implements CD {
private static final String author = "Jay Chou";
/**
* 专辑名称
*/
private String albumName;
@Override
public void play() {
System.out.println(author + "'s album: " + albumName);
}
}
CD播放器:
/**
* @Author river66
* @Date 2020/4/4 22:24
* <p>
* CD播放器
*/
public class CDPlayer {
private CD cd;
public CDPlayer(CD cd) {
this.cd = cd;
}
public void play() {
cd.play();
}
}
测试打印:
Jay Chou's album: 《七里香》
二、初始化时在xml配置文件中引用java注解配置的bean
事实上,<import>元素只能导入其他的XML配置文件,并没有XML元素能够导入JavaConfig类(标有:@Configuration的类)
<import resource="classpath:cd-config.xml"/>
但是,有一个你已经熟知的元素能将Java配置导入到XML配置中:<bean>元素。为了将JavaConfig类导入到XML配置中。
xml配置文件: cd-player-config.xml(删除上面的CDPlayerConfig.java文件)
<?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-4.0.xsd">
<bean class="com.river.boot.config.CDConfig"/>
<bean id="cdPlayer"
class="com.river.boot.bean.CDPlayer"
c:cd-ref="jayChouCD"/>
</beans>
说明:
属性名以“c:”开头,也就是命名空间的前缀。接下来就是要装配的构造器参数名(也就是CDPlayer中的构造函数参数名:cd),在此之后是“-ref”,这是一个命名的约定,它会告诉 Spring,正在装配的是一个bean的引用,这个bean的名字是jayChouCD,而不是字面量“jayChouCD”。很显然,使用c-命名空间属性要比使用<constructor-arg>元素简练得多。
java配置文件:CDConfig.java(删除上面的cd-config.xml文件)
**
* @Author river66
* @Date 2020/4/4 22:15
*/
@Configuration
@ImportResource("classpath:cd-player-config.xml")
public class CDConfig {
/**
* 周杰伦CD唱片
*/
@Bean
public CD jayChouCD() {
JayChouCD cd = new JayChouCD();
cd.setAlbumName("《十一月的肖邦》");
return cd;
}
}
测试打印:
Jay Chou's album: 《十一月的肖邦》
觉得有用的老铁点个赞呗~
本文介绍了如何在Spring中结合使用Java注解和XML配置来初始化bean。通过@ImportResource注解,可以在Java配置类中引用XML配置文件中的bean,例如在CD播放器配置中引入CD配置。同时,XML配置文件也可以通过<bean>元素导入JavaConfig类。文中提供了CD播放器和CD的具体实现示例,并展示了测试结果。
2959

被折叠的 条评论
为什么被折叠?



