spring aop 注解 scan类扫描加载过程

电脑杂谈  发布时间:2018-02-01 22:07:38  来源:网络整理

spring aop方法_spring aop 是什么_spring aop 注解

最近因为写书的事情,一段时间没有写博客了,有朋友最近问到了spring加载类的过程,尤其是基于annotation注解的加载过程,有些时候如果由于某些系统部署的问题,加载不到,很是不解!就针对这个问题,我这篇博客说说spring启动过程,用源码来说明,这部分内容也会在书中出现,只是表达方式会稍微有些区别,我将使用spring 3.0的版本来说明(虽然版本有所区别,但是变化并不是特别大),另外,这里会从WEB中使用spring开始,中途会穿插自己通过new ClassPathXmlApplicationContext的区别和联系。

要看这部分源码,其实在spring 3.0以上大家都一般会配置一个Servelet,如下所示:

当然servlet的名字决定了,你自己获取SpringContext的方式,在前面文章:《spring里头各种获取ApplicationContext的方法》有详细的说明,这里就不细说了,我们就通过DispatcherServlet来说明和跟踪(注意我们这里不说请求转发,就说bean的加载过程),我们知道servlet的规范中,如果load-on-startup被设定了,那么就会被初始化的时候装载,而servlet装载时会调用其init()方法,那么自然是调用DispatcherServlet的init方法,通过源码一看,竟然没有,但是并不带表真的没有,你会发现在父类的父类中:org.springframework.web.servlet.HttpServletBean有这个方法,如下图所示:

publicfinalvoidinit()throwsServletException{

if(logger.isDebugEnabled()){

logger.debug("Initializingservlet'"+getServletName()+"'");

}

//Setbeanpropertiesfrominitparameters.

try{

PropertyValuespvs=newServletConfigPropertyValues(getServletConfig(),this.requiredProperties);

BeanWrapperbw=PropertyAccessorFactory.forBeanPropertyAccess(this);

ResourceLoaderresourceLoader=newServletContextResourceLoader(getServletContext());

bw.registerCustomEditor(Resource.class,newResourceEditor(resourceLoader));

initBeanWrapper(bw);

bw.setPropertyValues(pvs,true);

}

catch(BeansExceptionex){

logger.error("Failedtosetbeanpropertiesonservlet'"+getServletName()+"'",ex);

throwex;

}

//Letsubclassesdowhateverinitializationtheylike.

initServletBean();

if(logger.isDebugEnabled()){

logger.debug("Servlet'"+getServletName()+"'configuredsuccessfully");


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-64433-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 王维婷
      王维婷

      肯定有反制措施

    • 悼公张天锡
      悼公张天锡

      所以麻麻一把年纪还纯真的喜欢你@TFBOYS-易烊千玺呀

    热点图片
    拼命载入中...