java - spring框架如何加载外部jar包中的类

 手机用户2502858701 发布于 2022-10-27 21:30
问题描述

这两天在学习spring框架,有一个问题困扰了我很久,希望在这里能得到解答。

目前状况

目前的程序是可以运行的,项目文件的结构是这样的:

UserDao的代码如下:

package com.rl.spring.dao;

public interface UserDao {
    void test();

}

UserDaoImpl的代码如下:

package com.rl.spring.dao.impl;

import com.rl.spring.dao.UserDao;

public class UserDaoImpl implements UserDao {
    public void test(){
        System.out.println("userDaoImpl test success");
    }

}

配置文件ApplicationContext.xml的内容如下:


http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">
        

我创建了一个单元测试,代码如下:

package com.rl.spring.test;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.event.ApplicationContextEvent;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.rl.spring.dao.UserDao;
public class TestSpring {
    @Test
    public void test(){
        ApplicationContext ctx = new ClassPathXmlApplicationContext("ApplicationContext.xml");
        UserDao obj = (UserDao) ctx.getBean("userDao");
        obj.test();
    }

}

到目前为止,一切都是十分顺利的。

问题

假设我自己的项目中只有一个基类UserDao,而UserDao的具体实现UserDaoImpl则是别人写的,他把生成的jar包发给我,那我怎么样才能不修改我的代码,直接修改配置文件ApplicationContext.xml,就能加载别人写的类,在我的程序中生成UserDaoImpl对象呢?

2 个回答
  • 可以在maven中添加相关的依赖。

    2022-11-12 01:45 回答
  • 我看你的项目没有使用包依赖管理工具
    具体可以采用下面的方式:

    1 首先你必须将别人的jar包引入到自己项目的classpath当中。
    2.1 如果别人的类有相应的注解,例如
    @Component@Controller@Repository@Service这样的spring注解和@Resource之类的javax注解。
    则在ApplicationContext.xml中添加<context:component-scan base-package="xx.xx.xx"/>就可以引入。
    xx.xx.xx是别人jar包中的包命名。
    2.2 如果别人的类没有相应的注解,则在bean配置中class选择别人的类即可。
    2.3 还有一种方法,就是你写一个包装类,将别人的类当作你包装类的属性,在bean配置中,采用property的方式引入。

    2022-11-12 01:45 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有