spring启动将字典加载到servlet容器

先说下开始的问题,spring和servlet都是容器,一开始用原始servlet监听器,发现需要的服务类注入不进来,然后我转过头来使用spring监听器,于是也不行,于是网上搜了下,用PostConstruct注解可以帮助我们,这个注解的意思是:@PostConstruct注解的方法将会在依赖注入完成后被自动调用。
这个解决了,于是问题来了,数据加载了怎么加载得到servlet容器,于是万能的百度,又搜到了,其实可以直接

@Autowired
private ServletContext servletContext;

哇,感觉完美于是就解决了

package com.zhizhuo.web.listener;

import javax.annotation.PostConstruct;
import javax.servlet.ServletContext;

import com.zhizhuo.model.Params;
import com.zhizhuo.service.StaffService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.context.ContextLoader;

@Component
public class InitComponent {
    @Autowired
    private StaffService staffService;
    @Autowired
    private Params params;
    @Autowired
    private ServletContext servletContext;

    public InitComponent() {
        System.out.println("================================我被构造了===============================================");
    }

    @PostConstruct
    public void init() {
        System.out.println("================================我被执行了===============================================");
        System.out.println(servletContext.getContextPath());
        servletContext.setAttribute("path", servletContext.getContextPath());
        //加载系统参数
        params.loadParams();
        servletContext.setAttribute("params", Params.params);
        System.out.println(Params.params);
    }
}

其实获得servlet容器还有一种方法
就是从spring的类ContextLoader获得本地绑定的servlet容器,

ContextLoader.getCurrentWebApplicationContext().getServletContext()

查看源码发现

在这里插入图片描述
currentContextPerThread是什么,导航发现是个并发容器
currentContextPerThread = new ConcurrentHashMap(1);
那么问题了来了,什么时候注入进去的,然后我想起了我们再web.xml里面配置的监听器,查看源码可以看出,有个这么个方法,并且把容器传入进去了
在这里插入图片描述
发现他把servlet put到并发容器里面了
在这里插入图片描述
好了,第一次简单分析源码就到这里了,只是有点好奇,然后探索了一下,嘻嘻

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值