1. 程式人生 > >Spring基於Java類配置Bean(四):通過@Configuration配置類引用xml配置資訊

Spring基於Java類配置Bean(四):通過@Configuration配置類引用xml配置資訊

總結:

在@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]