Spring如何借助ClassPathXmlApplicationContext类初始化及获取Bean对象呢?

戚薇 Spring 发布时间:2023-05-01 21:00:51 阅读数:18700 1
下文笔者讲述借助ClassPathXmlApplicationContext类初始化bean-并获取Bean对象的方法及示例分享,如下所示

ClassPathXmlApplicationContext简介

Spring中读取xml配置类可使用ClassPathXmlApplicationContext完成
 那么这就是ClassPathXmlApplicationContext的功能

ClassPathXmlApplicationContext的使用示例

 
//初始化Spring容器(上下文对象)
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext.xml");
//获取Bean对象
UserService userService = (UserService) applicationContext.getBean("userServiceImpl");
例:
1.实体层(Entity层)
   Entity目录(实体层)
   创建用户信息实体类(UserInfo.java)

package com.java265.ssm.entity; 
import org.springframework.stereotype.Component;
 
/**
 * 用户信息实体类 
 **/
@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.java265.ssm.dao;
 
import com.java265.ssm.entity.UserInfo;
 
/**
 * 用户信息数据库访问接口
 **/
public interface UserDao
{
    /**
     * 获取用户信息
     */
    public UserInfo getUserInfo();
}

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

package com.java265.ssm.dao.impl;
 
import com.java265.ssm.dao.UserDao;
import com.java265.ssm.entity.UserInfo;
import org.springframework.stereotype.Repository;
 
/**
 * 用户信息数据库访问类
 **/
@Repository
public class UserDaoImpl implements UserDao
{
    /**
     * 获取用户信息
     */
    public UserInfo getUserInfo()
    {
        //获取用户信息(模拟读取数据库获取数据)
        UserInfo userInfo = new UserInfo();
        userInfo.setUserId(1);
        userInfo.setUserName("java265");
        userInfo.setBlogUrl("https://www.java265.com");
        userInfo.setRemark("java265");
        return userInfo;
    }
}

3.业务逻辑服务层(Service层)
   创建用户信息业务逻辑接口(UserService.java)

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

//实现类(UserServiceImpl.java)

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

4.测试示例

创建用户测试类(UserTest.java)

package com.java265.ssm.test;
 
import com.java265.ssm.entity.UserInfo;
import com.java265.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;
 
/**
 * 用户测试类
 **/
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());
    }
}
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaFramework/Spring/202305/6323.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者