本文參考自:《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>
說明:
**
* @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: 《十一月的肖邦》
覺得有用的老鐵點個讚唄~