Spring基於Java類配置Bean(四):通過@Configuration配置類引用xml配置資訊
阿新 • • 發佈:2019-02-16
總結:
在@Configuration配置類中,通過@ImportResource就可以引入xml配置檔案,在配置類中可直接通過@AutoWired引用xml檔案中定義的bean。
(1)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:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <!-- <context:component-scan base-package="com.study.spring.bean.javaClassBean"/> --> <bean id = "userDao" class = "com.study.spring.bean.javaClassBean.UserDao"/> </beans>
(2)@Configuration配置類
package com.study.spring.bean.javaClassBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.ImportResource; @Configuration @ImportResource("classpath:conf/spring/spring-conf.xml") //(1)通過@ImportResource引入xml配置檔案 public class SpringBeansConfig { @Bean @Autowired //(2)自動注入xml配置檔案定義的Bean public UserService userService(UserDao userDao) { UserService userService = new UserService(); userService.setUserDao(userDao); return userService; } }
(3)UserService類
package com.study.spring.bean.javaClassBean; import com.study.spring.interfaces.IUserService; import java.util.List; /** * 業務層 */ public class UserService implements IUserService { private UserDao userDao; //要有set方法 public void setUserDao(UserDao userDao) { this.userDao = userDao; } @Override public List<User> queryUserList() { if (null != userDao) { return userDao.queryUserList(); } return null; } }
(4)測試類
package com.study.spring.bean.javaClassBean;
import java.util.List;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
//import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestJavaClassBean {
public static void main(String[] args) {
//方法一:AnnotationConfigApplicationContext類通過標註@Configuration的Java類啟動Spring容器。
ApplicationContext context = new AnnotationConfigApplicationContext(SpringBeansConfig.class);
UserService userService = context.getBean(UserService.class);
//方法二:AnnotationConfigApplicationContext支援通過編碼的方式載入多個@Configuration配置類,然後通過重新整理容器因應用這些配置類。
//AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
//註冊一個活或多個@Configuration配置類
//context.register(SpringBeansConfig.class);
//繼續註冊@Configuration配置類
//context.register(SpringConfig.class);
//重新整理容器以應用這些註冊的配置類
//context.refresh();
//ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("conf/spring/spring-conf.xml");
//UserDao userDao = (UserDao)context.getBean("userDaoTemp");
//List<User> userList = userDao.queryUserList();
//UserService userService = (UserService)context.getBean("userService");
List<User> userList = userService.queryUserList();
if (null != userList) {
for (User user : userList) {
System.out.println(user);
}
} else {
System.out.println("userList is null...");
}
//context.destroy();
}
}
(5)測試結果
資訊: Loading XML bean definitions from class path resource [conf/spring/spring-conf.xml]
User [userName=userName1, password=password1, updateTime=1526433618543]
User [userName=userName2, password=password2, updateTime=1526433618543]
User [userName=userName3, password=password3, updateTime=1526433618543]
User [userName=userName4, password=password4, updateTime=1526433618543]
User [userName=userName5, password=password5, updateTime=1526433618543]