classpath & classpath*

  • applicationContext.xml
    这个文件在项目是非构建工具构建时,一般是放在 /WEB-INF/ 下面,所以在web.xml 里面配置是这样的。
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>applicationContext.xml</param-value>
    </context-param>

如果你有多个文件,可以这样做:

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            applicationContext.xml
            applicationContext2.xml
            applicationContext3.xml
        </param-value>
    </context-param>

但是一般建议是:只把applicationContext.xml 放在这里,其他的放入applicationContext.xml 里面:

    <import resource="applicationContext2.xml" />
    <import resource="applicationContext3.xml" />

note: 这里是相对路径

随着项目的不断增长,会出现 前端和后端分离的情况 ,后端dao和service 是通过jar包来引入,那么原来引入xml文件的方式 也要发生变化:

    <import resource="classpath:applicationContext2.xml" />
    <import resource="classpath:applicationContext3.xml" />

这个方式是使用classLoader(WebAppClassLoader) 来加载
在 ClasspathResource 里面 可以见到:

    @Override
    public InputStream getInputStream() throws IOException {
        InputStream is;
        if (this.clazz != null) {
            is = this.clazz.getResourceAsStream(this.path);
        }
        else if (this.classLoader != null) {
            is = this.classLoader.getResourceAsStream(this.path);
        }
        else {
            is = ClassLoader.getSystemResourceAsStream(this.path);
        }
        if (is == null) {
            throw new FileNotFoundException(getDescription() + " cannot be opened because it does not exist");
        }
        return is;
    }

note: 这种方式只会去获取最先匹配路径的classpath ,然后就
还用一种是引入方式是:

    <import resource="classpath*:applicationContext2.xml" />

note: 这个会去匹配所有符合 applicationContext2.xml 路径的classpath , 就可以获取多个 ,如果多个xml 里面有多个name相同的 bean, 后依赖的jar包里面的bean Value 会覆盖掉前面的。
这样就可以将controller层 需要从jar包 引入的配置文件 统一配成(/AAAA/bbb.xml) 这样就可以在controller 层里面写成这样。(但在公司实际项目中 我们会根据项目名而命令不同的配置文件,比如dao层, xxxx-dao.xml ,所以目前只是了解。)

    <import resource="classpath*:AAAA/bbb.xml" />

关于这个Resource 的文档解释 看 官方文档

另参考 此文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值