Spring
文章平均质量分 75
ph3636
这个作者很懒,什么都没留下…
展开
-
SpringMVC的Controller接口方法参数解析
SpringMVC的Controller接口方法参数解析的过程与分析,常用注解RequestParam,PathVariable,ModelAttribute的使用,自定义对象和集合类型参数的解析。原创 2017-09-22 16:59:27 · 967 阅读 · 0 评论 -
Spring AOP(4)
8. 执行代理JdkDynamicAopProxy#invoke,exposeProxy主要用来暴露代理,实现增强,Spring事务的嵌套就需要该参数。public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { MethodInvocation invocation; Obje...原创 2019-01-29 15:44:12 · 162 阅读 · 0 评论 -
Spring源码分析之组件扫描(上)
关于组件扫描的标签是context,对应的命名空间处理类为ContextNamespaceHandler,可以使用注解ComponentScan,但是还是需要设置标签annotation-config,也可以直接使用标签component-scanpublic class ContextNamespaceHandler extends NamespaceHandlerSupport { ...原创 2019-08-03 17:47:49 · 238 阅读 · 0 评论 -
Spring源码分析之组件扫描(下)
名字获取成功后,判断bean定义是那种类型,如果是注解类型的话,就解析以下这些属性static void processCommonDefinitionAnnotations(AnnotatedBeanDefinition abd, AnnotatedTypeMetadata metadata) { if (metadata.isAnnotated(Lazy.class.getName...原创 2019-08-03 17:51:22 · 336 阅读 · 0 评论 -
Spring源码分析之组件扫描配置类(上)
创建配置类解析器// Parse each @Configuration classConfigurationClassParser parser = new ConfigurationClassParser( this.metadataReaderFactory, this.problemReporter, this.environment, this.resource...原创 2019-08-03 17:55:14 · 530 阅读 · 0 评论 -
Spring源码分析之组件扫描配置类(下)
bean定义解析完成后,验证是否有解析错误,创建配置类读取类do { parser.parse(candidates); parser.validate(); Set<ConfigurationClass> configClasses = new LinkedHashSet<ConfigurationClass>(parser.getConfigura...原创 2019-08-03 17:58:43 · 474 阅读 · 0 评论 -
Spring源码分析之组件扫描自动装配类
注册注解装配bean处理类,默认注解有Autowired,Value,Injectif (!registry.containsBeanDefinition(AUTOWIRED_ANNOTATION_PROCESSOR_BEAN_NAME)) { RootBeanDefinition def = new RootBeanDefinition(AutowiredAnnotationBean...原创 2019-08-10 14:01:10 · 294 阅读 · 0 评论 -
Spring源码分析之组件扫描通用配置类
注册通用配置处理类CommonAnnotationBeanPostProcessor// Check for JSR-250 support, and if present add the CommonAnnotationBeanPostProcessor.if (jsr250Present && !registry.containsBeanDefinition(COMMO...原创 2019-08-10 14:04:40 · 352 阅读 · 0 评论 -
Spring源码分析之组件扫描初始销毁必需处理
注册初始化销毁处理类InitDestroyAnnotationBeanPostProcessor,主要解析注解PostConstruct,PreDestroy,它实现了接口MergedBeanDefinitionPostProcessor,执行postProcessMergedBeanDefinition方法,进行bean定义合并处理public void postProcessMer...原创 2019-08-10 14:08:24 · 175 阅读 · 0 评论 -
Spring源码分析之组件扫描事件监听处理器
判断是否支持JPA来注册持久化bean处理器// Check for JPA support, and if present add the PersistenceAnnotationBeanPostProcessor.if (jpaPresent && !registry.containsBeanDefinition(PERSISTENCE_ANNOTATION_PRO...原创 2019-08-10 14:11:55 · 173 阅读 · 0 评论 -
Spring源码分析之与WEB服务器衔接(上)
web服务器的配置文件是\webapp\WEB-INF\web.xml,这里面会配置两个Spring容器,父容器是通过监听ServletContextListener上下文事件通过ContextLoaderListener初始化并加载所需要的容器环境,子容器就是当初始化Servlet时加载用于MVC功能的容器环境。<?xml version="1.0" encoding="UTF-8...原创 2019-08-22 20:22:14 · 136 阅读 · 0 评论 -
Spring AOP(3)
5. 创建代理,AbstractAutoProxyCreator#createProxy,创建代理工厂,解析proxyTargetClass属性和实现的接口属性protected Object createProxy( Class<?> beanClass, String beanName, Object[] specificInterceptors, TargetSour...原创 2019-01-29 12:32:58 · 161 阅读 · 0 评论 -
Spring AOP(2)
3. 初始化元数据AspectMetadata,从ReflectiveAspectJAdvisorFactory获取所有顾问类Advisor,获取所有不带Pointcut注解的方法public List<Advisor> getAdvisors(MetadataAwareAspectInstanceFactory aspectInstanceFactory) { Class&...原创 2019-01-29 11:48:12 · 329 阅读 · 0 评论 -
Spring事务增强
一:问题描述1.事务配置<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean原创 2017-12-22 14:23:48 · 1360 阅读 · 0 评论 -
Tomcat和Spring衔接
1.概述:Tomcat启动的时候会触发Host的启动,进而触发我们的业务项目Context的启动,主要的配置文件就是\webapp\WEB-INF\web.xml,这里面会配置两个Spring容器,父容器是通过监听ServletContextListener上下文事件通过ContextLoaderListener初始化并加载所需要的容器环境,子容器就是当初始化Servlet时加载用于SpringM原创 2018-02-03 14:04:21 · 3283 阅读 · 0 评论 -
Spring类定义的组件扫描
一。针对web项目的根据注解方式的组件扫描,有两个容器文件applicationContext.xml<context:component-scan base-package="com.ph3636"> <context:exclude-filter type="annotation" expression="org.springframework.stereot...原创 2018-02-28 13:39:03 · 301 阅读 · 0 评论 -
DispatcherServlet解析
1.DispatcherServlet主要的外层方法主要有initStrategies初始化各种资源策略,再就是doService主要的请求处理方法protected void initStrategies(ApplicationContext context) { initMultipartResolver(context); initLocaleReso...原创 2018-03-09 16:50:37 · 308 阅读 · 0 评论 -
Spring容器初始化(1)
一。本文以直接加载类路径XML文件为例,容器加载入口,为了缩短长度,本文会忽略某些异常的情况ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"META-INF/spring/applicationContext.xml"});设置配置文件路径,启动最核心的方法refre...原创 2018-07-04 14:03:09 · 413 阅读 · 0 评论 -
Spring容器初始化(2)
11. 初始化容器中所有非类加载的类// Instantiate all remaining (non-lazy-init) singletons.finishBeanFactoryInitialization(beanFactory);设置转换服务,日期转换,钱币转换等等,设置占位符解析器,初始化LoadTimeWeaverAware类型的类,在容器中设置冻结配置的标志,缓存所有bean定义元...原创 2018-07-04 19:58:01 · 224 阅读 · 0 评论 -
Spring容器初始化(3)
接上篇Spring容器初始化(2),初始化bean,开始执行一些额外的实现接口BeanNameAware,BeanClassLoaderAware,BeanFactoryAwareprotected Object initializeBean(final String beanName, final Object bean, RootBeanDefinition mbd) { if (Sys...原创 2018-07-04 21:00:48 · 173 阅读 · 0 评论 -
Spring解析XML
1. 开始从XML中加载Bean定义,设置AbstractBeanDefinitionReader的注册中心为容器本身this.registry = registry;,设置资源路径解析器,可以针对不同的资源进行分别解析出相应的资源,this.resourceLoader = new PathMatchingResourcePatternResolver();设置".dtd"和".xsd"两种实体...原创 2018-07-05 19:24:28 · 1632 阅读 · 0 评论 -
Spring的自动注入
1. 除非把每个bean都用<bean>标签写入到XML文件中,否则一般情况下我们需要用到<context:component-scan>标签,解析该标签需要用到ComponentScanBeanDefinitionParser,具体的解析接上文https://blog.csdn.net/ph3636/article/details/79397678,在解析过程中,Anno...原创 2018-07-19 15:07:58 · 1187 阅读 · 0 评论 -
Spring AOP(1)
1. xml配置文件定义/META-INF/spring.schemas,具体的命名空间解析类/META-INF/spring.handlerspublic class AopNamespaceHandler extends NamespaceHandlerSupport { @Override public void init() { // In 2.0 XSD as well ...原创 2019-01-28 18:58:10 · 162 阅读 · 0 评论 -
Spring源码分析之与WEB服务器衔接(下)
SpringMVC子容器的启动,也就是DispatcherServlet的初始化,它的父类HttpServletBean实现了servlet的初始化方法public final void init() throws ServletException { if (logger.isDebugEnabled()) { logger.debug("Initializing servl...原创 2019-08-22 20:25:13 · 238 阅读 · 0 评论