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

查看:128
本文介绍了java - spring框架如何加载外部jar包中的类的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

问题描述

这两天在学习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的内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">
        <bean id="userDao" class="com.rl.spring.dao.impl.UserDaoImpl" ></bean>
</beans>

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

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对象呢?

解决方案

我看你的项目没有使用包依赖管理工具
具体可以采用下面的方式:

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的方式引入。

这篇关于java - spring框架如何加载外部jar包中的类的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆