Spring使用ClassPathXmlApplicationContext类初始化并获取Bean对象

在Java项目开发中,使用Spring框架后需要进行单元测试时,可以使用ClassPathXmlApplicationContext类初始化Spring容器对象,然后使用getBean()方法,获取Bean对象。核心方法如下:

//初始化Spring容器(上下文对象)
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext.xml");
//获取Bean对象
UserService userService = (UserService) applicationContext.getBean("userServiceImpl");

综合实例

【实例】Spring使用ClassPathXmlApplicationContext类初始化并获取Bean对象,进行单元测试,获取用户信息。执行结果如下图:

(1)实体层(Entity层)

在Entity目录(实体层),创建用户信息实体类(UserInfo.java)。

package com.pjb.ssm.entity;

import org.springframework.stereotype.Component;

/**
 * 用户信息实体类
 *
 * @author pan_junbiao
 **/
@Component
public class UserInfo
{
    private int userId; //用户ID
    private String userName; //用户姓名
    private String blogUrl; //博客地址
    private String remark; //备注

    //省略getter与setter方法...
}

(2)数据访问层(Dao层)

创建用户信息数据库访问接口(UserDao.java)。

package com.pjb.ssm.dao;
 
import com.pjb.ssm.entity.UserInfo;
 
/**
 * 用户信息数据库访问接口
 *
 * @author pan_junbiao
 **/
public interface UserDao
{
    /**
     * 获取用户信息
     */
    public UserInfo getUserInfo();
}

创建用户信息数据库访问类(UserDaoImpl.java),并标识@Repository注解,实现UserDao接口,实现获取用户信息,模拟读取数据库获取数据方法。

package com.pjb.ssm.dao.impl;
 
import com.pjb.ssm.dao.UserDao;
import com.pjb.ssm.entity.UserInfo;
import org.springframework.stereotype.Repository;
 
/**
 * 用户信息数据库访问类
 *
 * @author pan_junbiao
 **/
@Repository
public class UserDaoImpl implements UserDao
{
    /**
     * 获取用户信息
     */
    public UserInfo getUserInfo()
    {
        //获取用户信息(模拟读取数据库获取数据)
        UserInfo userInfo = new UserInfo();
        userInfo.setUserId(1);
        userInfo.setUserName("pan_junbiao的博客");
        userInfo.setBlogUrl("https://blog.csdn.net/pan_junbiao");
        userInfo.setRemark("您好,欢迎访问 pan_junbiao的博客");
        return userInfo;
    }
}

(3)业务逻辑服务层(Service层)

创建用户信息业务逻辑接口(UserService.java)。

package com.pjb.ssm.service;
 
import com.pjb.ssm.entity.UserInfo;
 
/**
 * 用户信息业务逻辑接口
 *
 * @author pan_junbiao
 **/
public interface UserService
{
    /**
     * 获取用户信息
     */
    public UserInfo getUserInfo();
}

用户信息业务逻辑类(UserServiceImpl.java),并实现UserService接口。

package com.pjb.ssm.service.impl;
 
import com.pjb.ssm.dao.UserDao;
import com.pjb.ssm.entity.UserInfo;
import com.pjb.ssm.service.UserService;
import org.springframework.stereotype.Service;
 
import javax.annotation.Resource;
 
/**
 * 用户信息业务逻辑类
 *
 * @author pan_junbiao
 **/
@Service
public class UserServiceImpl implements UserService
{
    @Resource
    private UserDao userDao;
 
    /**
     * 获取用户信息
     */
    public UserInfo getUserInfo()
    {
        return userDao.getUserInfo();
    }
}

(4)测试层(Test层)

创建用户测试类(UserTest.java),这里使用 Junit4 进行单元测试。

package com.pjb.ssm.test;

import com.pjb.ssm.entity.UserInfo;
import com.pjb.ssm.service.UserService;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * 用户测试类
 *
 * @author pan_junbiao
 **/
public class UserTest
{
    private ApplicationContext applicationContext;
    private UserService userService;

    @Before
    public void setUp() throws Exception
    {
        //初始化Spring容器(上下文对象)
        applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext.xml");
        //获取Bean对象
        userService = (UserService) applicationContext.getBean("userServiceImpl");
    }

    @After
    public void tearDown() throws Exception
    {
        System.out.println("测试完成!");
    }

    @Test
    public void getUserInfo()
    {
        //获取用户信息
        UserInfo userInfo = userService.getUserInfo();
        //打印结果
        System.out.println("用户编号:" + userInfo.getUserId());
        System.out.println("用户姓名:" + userInfo.getUserName());
        System.out.println("博客地址:" + userInfo.getBlogUrl());
        System.out.println("备注信息:" + userInfo.getRemark());
    }
}
发布了354 篇原创文章 · 获赞 208 · 访问量 165万+

猜你喜欢

转载自blog.csdn.net/pan_junbiao/article/details/104210386