springMVC 学习笔记

来源:互联网 发布:大数据 涂子沛 epub 编辑:程序博客网 时间:2024/05/01 23:24

spring mvc中核心Servlet的继承结构:


XXXAware在spring里表示对XXX感知,实现XXXAware,就可以通过实现对应的set-XXX,然后就可以使用XXX了。

例子:public interface ApplicationContextAware extends Aware 

void setApplicationContext(ApplicationContext applicationContext) throws BeansException;

实现ApplicationContextAware #setApplicationContext,spring就会自动调用setApplicationContext把ApplicationContext 传进来。

public interface EnvironmentCapable {

/**
* Return the Environment for this object
*/
Environment getEnvironment();

}

org.springframework.web.servlet.HttpServletBean.init()   //调用堆栈

DispatcherServlet(HttpServletBean).init() line: 123
DispatcherServlet(GenericServlet).init(ServletConfig) line: 158
StandardWrapper.initServlet(Servlet) line: 1238
StandardWrapper.loadServlet() line: 1151
StandardWrapper.load() line: 1038
StandardContext.loadOnStartup(Container[]) line: 4997
StandardContext.startInternal() line: 5289
StandardContext(LifecycleBase).start() line: 147
ContainerBase$StartChild.call() line: 1408
ContainerBase$StartChild.call() line: 1398
FutureTask<V>.run() line: not available
ThreadPoolExecutor.runWorker(ThreadPoolExecutor$Worker) line: not available
ThreadPoolExecutor$Worker.run() line: not available
Thread.run() line: not available


/**
* Initialize the strategy objects that this servlet uses.
* <p>May be overridden in subclasses in order to initialize further strategy objects.
*/
protected void initStrategies(ApplicationContext context) {

                //组件初始化
initMultipartResolver(context);
initLocaleResolver(context);
initThemeResolver(context);
initHandlerMappings(context);
initHandlerAdapters(context);
initHandlerExceptionResolvers(context);
initRequestToViewNameTranslator(context);
initViewResolvers(context);
initFlashMapManager(context);
}


DispatcherServlet.initStrategies(ApplicationContext) line: 444
DispatcherServlet.onRefresh(ApplicationContext) line: 432
DispatcherServlet(FrameworkServlet).onApplicationEvent(ContextRefreshedEvent) line: 789
FrameworkServlet$ContextRefreshListener.onApplicationEvent(ContextRefreshedEvent) line: 1100
FrameworkServlet$ContextRefreshListener.onApplicationEvent(ApplicationEvent) line: 1097
GenericApplicationListenerAdapter.onApplicationEvent(ApplicationEvent) line: 51
SourceFilteringListener.onApplicationEventInternal(ApplicationEvent) line: 96
SourceFilteringListener.onApplicationEvent(ApplicationEvent) line: 68
SimpleApplicationEventMulticaster.multicastEvent(ApplicationEvent) line: 96
XmlWebApplicationContext(AbstractApplicationContext).publishEvent(ApplicationEvent) line: 334
XmlWebApplicationContext(AbstractApplicationContext).finishRefresh() line: 948
XmlWebApplicationContext(AbstractApplicationContext).refresh() line: 482
DispatcherServlet(FrameworkServlet).configureAndRefreshWebApplicationContext(ConfigurableWebApplicationContext) line: 651
DispatcherServlet(FrameworkServlet).createWebApplicationContext(ApplicationContext) line: 602
DispatcherServlet(FrameworkServlet).createWebApplicationContext(WebApplicationContext) line: 665
DispatcherServlet(FrameworkServlet).initWebApplicationContext() line: 521
DispatcherServlet(FrameworkServlet).initServletBean() line: 462
DispatcherServlet(HttpServletBean).init() line: 136
DispatcherServlet(GenericServlet).init(ServletConfig) line: 158
StandardWrapper.initServlet(Servlet) line: 1238
StandardWrapper.loadServlet() line: 1151
StandardWrapper.load() line: 1038
StandardContext.loadOnStartup(Container[]) line: 4997
StandardContext.startInternal() line: 5289
StandardContext(LifecycleBase).start() line: 147
ContainerBase$StartChild.call() line: 1408
ContainerBase$StartChild.call() line: 1398
FutureTask<V>.run() line: not available
ThreadPoolExecutor.runWorker(ThreadPoolExecutor$Worker) line: not available
ThreadPoolExecutor$Worker.run() line: not available
Thread.run() line: not available


org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.RequestMappingHandlerAdapter()

public RequestMappingHandlerAdapter() {


StringHttpMessageConverter stringHttpMessageConverter = new StringHttpMessageConverter();
stringHttpMessageConverter.setWriteAcceptCharset(false); // See SPR-7316


this.messageConverters = new ArrayList<HttpMessageConverter<?>>();
this.messageConverters.add(new ByteArrayHttpMessageConverter());
this.messageConverters.add(stringHttpMessageConverter);
this.messageConverters.add(new SourceHttpMessageConverter<Source>());
this.messageConverters.add(new AllEncompassingFormHttpMessageConverter());
}


RequestMappingHandlerAdapter.<init>() line: 177
NativeConstructorAccessorImpl.newInstance0(Constructor, Object[]) line: not available [native method]
NativeConstructorAccessorImpl.newInstance(Object[]) line: not available
DelegatingConstructorAccessorImpl.newInstance(Object[]) line: not available
Constructor<T>.newInstance(Object...) line: not available
BeanUtils.instantiateClass(Constructor<T>, Object...) line: 148
CglibSubclassingInstantiationStrategy(SimpleInstantiationStrategy).instantiate(RootBeanDefinition, String, BeanFactory) line: 87
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).instantiateBean(String, RootBeanDefinition) line: 1030
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBeanInstance(String, RootBeanDefinition, Object[]) line: 983
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object[]) line: 487
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object[]) line: 458
AbstractBeanFactory$1.getObject() line: 296
DefaultListableBeanFactory(DefaultSingletonBeanRegistry).getSingleton(String, ObjectFactory<?>) line: 223
DefaultListableBeanFactory(AbstractBeanFactory).doGetBean(String, Class<T>, Object[], boolean) line: 293
DefaultListableBeanFactory(AbstractBeanFactory).getBean(String) line: 194
DefaultListableBeanFactory.preInstantiateSingletons() line: 628
XmlWebApplicationContext(AbstractApplicationContext).finishBeanFactoryInitialization(ConfigurableListableBeanFactory) line: 932
XmlWebApplicationContext(AbstractApplicationContext).refresh() line: 479
DispatcherServlet(FrameworkServlet).configureAndRefreshWebApplicationContext(ConfigurableWebApplicationContext) line: 651
DispatcherServlet(FrameworkServlet).createWebApplicationContext(ApplicationContext) line: 602
DispatcherServlet(FrameworkServlet).createWebApplicationContext(WebApplicationContext) line: 665
DispatcherServlet(FrameworkServlet).initWebApplicationContext() line: 521
DispatcherServlet(FrameworkServlet).initServletBean() line: 462
DispatcherServlet(HttpServletBean).init() line: 136
DispatcherServlet(GenericServlet).init(ServletConfig) line: 158
StandardWrapper.initServlet(Servlet) line: 1238
StandardWrapper.loadServlet() line: 1151
StandardWrapper.load() line: 1038
StandardContext.loadOnStartup(Container[]) line: 4997
StandardContext.startInternal() line: 5289
StandardContext(LifecycleBase).start() line: 147
ContainerBase$StartChild.call() line: 1408
ContainerBase$StartChild.call() line: 1398
FutureTask<V>.run() line: not available
ThreadPoolExecutor.runWorker(ThreadPoolExecutor$Worker) line: not available
ThreadPoolExecutor$Worker.run() line: not available
Thread.run() line: not available


org.springframework.context.support.ApplicationContextAwareProcessor.invokeAwareInterfaces(Object)

private void invokeAwareInterfaces(Object bean) {
if (bean instanceof Aware) {
if (bean instanceof EnvironmentAware) {
((EnvironmentAware) bean).setEnvironment(this.applicationContext.getEnvironment());
}
if (bean instanceof EmbeddedValueResolverAware) {
((EmbeddedValueResolverAware) bean).setEmbeddedValueResolver(
new EmbeddedValueResolver(this.applicationContext.getBeanFactory()));
}
if (bean instanceof ResourceLoaderAware) {
((ResourceLoaderAware) bean).setResourceLoader(this.applicationContext);
}
if (bean instanceof ApplicationEventPublisherAware) {
((ApplicationEventPublisherAware) bean).setApplicationEventPublisher(this.applicationContext);
}
if (bean instanceof MessageSourceAware) {
((MessageSourceAware) bean).setMessageSource(this.applicationContext);
}
if (bean instanceof ApplicationContextAware) {
((ApplicationContextAware) bean).setApplicationContext(this.applicationContext);
}
}
}


ApplicationContextAwareProcessor.invokeAwareInterfaces(Object) line: 99
ApplicationContextAwareProcessor.postProcessBeforeInitialization(Object, String) line: 92
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).applyBeanPostProcessorsBeforeInitialization(Object, String) line: 396
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).initializeBean(String, Object, RootBeanDefinition) line: 1505
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).doCreateBean(String, RootBeanDefinition, Object[]) line: 521
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).createBean(String, RootBeanDefinition, Object[]) line: 458
AbstractBeanFactory$1.getObject() line: 296
DefaultListableBeanFactory(DefaultSingletonBeanRegistry).getSingleton(String, ObjectFactory<?>) line: 223
DefaultListableBeanFactory(AbstractBeanFactory).doGetBean(String, Class<T>, Object[], boolean) line: 293
DefaultListableBeanFactory(AbstractBeanFactory).getBean(String, Class<T>) line: 198
DefaultListableBeanFactory.getBeansOfType(Class<T>, boolean, boolean) line: 438
XmlWebApplicationContext(AbstractApplicationContext).invokeBeanFactoryPostProcessors(ConfigurableListableBeanFactory) line: 624
XmlWebApplicationContext(AbstractApplicationContext).refresh() line: 461
DispatcherServlet(FrameworkServlet).configureAndRefreshWebApplicationContext(ConfigurableWebApplicationContext) line: 651
DispatcherServlet(FrameworkServlet).createWebApplicationContext(ApplicationContext) line: 602
DispatcherServlet(FrameworkServlet).createWebApplicationContext(WebApplicationContext) line: 665
DispatcherServlet(FrameworkServlet).initWebApplicationContext() line: 521
DispatcherServlet(FrameworkServlet).initServletBean() line: 462
DispatcherServlet(HttpServletBean).init() line: 136
DispatcherServlet(GenericServlet).init(ServletConfig) line: 158
StandardWrapper.initServlet(Servlet) line: 1238
StandardWrapper.loadServlet() line: 1151
StandardWrapper.load() line: 1038
StandardContext.loadOnStartup(Container[]) line: 4997
StandardContext.startInternal() line: 5289
StandardContext(LifecycleBase).start() line: 147
ContainerBase$StartChild.call() line: 1408
ContainerBase$StartChild.call() line: 1398
FutureTask<V>.run() line: not available
ThreadPoolExecutor.runWorker(ThreadPoolExecutor$Worker) line: not available
ThreadPoolExecutor$Worker.run() line: not available
Thread.run() line: not available

0 0