美文网首页
深入学习java笔记-17.Spring注解驱动开发汇总

深入学习java笔记-17.Spring注解驱动开发汇总

作者: 笨鸡 | 来源:发表于2019-05-13 16:42 被阅读0次

Spring注解驱动开发知识汇总

Spring注解,思维导图

Spring注解驱动开发:
    容器:
        AnnotationConfigApplictionContext
        组件添加:
            @ComponentScan:
                @Filter
                自定义过滤TypeFilter
            @Configuration
            @Bean
            @Component:
                @Service
                @Controller
                @Repository
            @Conditional
            @Primary    Autowired首选装配Bean
            @Lazy
            @Scope
            @Import
            ImportSelector
            ImportBeanDefinitionRegistrar
            FactoryBean工厂模式
        Bean生命周期:
            Bean的初始化与销毁:
                @Bean(initMethod="", destroyMethod="")
                InitializingBean, DisposableBean
                @PostConstruct, @PreDestroy
            Bean的后置处理器:
                BeanPostProcessor:
                    postProcessBeforeInitialization 在init-method之前
                    postProcessAfterInitialization  在init-method之后
                BeanPostProcessor原理:
                    populateBean 为Bean的属性赋值
                    initializeBean:
                        applyBeanPostProcessorsBeforeInitialization
                        invokeInitMethods
                        applyBeanPostProcessorsAfterInitialization
                Spring底层对BeanPostProcessor的使用:
                    Bean赋值
                    注入其他组件
                    @Autowired
                    生命周期注解功能
                    @Async
                    XXXBeanPostProcessor
        组件赋值:
            @Value
            @Autowired(required=false):     按照组件类型,位置:构造器,方法,参数,属性
                @Qualifier                  按照组件ID
                其他方式:
                    @Resource(name="")【JSR250】  不支持@Primary
                    @Inject【JSR330,需要导入javax.inject】
            @PropertySource 加载外部配置文件
            @PropertySources
            @Profile:
                Environment
                -Dspring.profiles.active=test
        组件注入:
            方法参数
            构造器注入
            ApplicationContextAware:
                ApplicationContextAwareProcessor
            ***Aware--->***Processor:
                ApplicationContextAware
                BeanNameAware
                EmbeddedValueResolverAware
        AOP:
            JoinPoint
            @EnableAspectJAutoProxy
            @Aspect
            @Pointcut:
                value:
                    execution(* spring_annotation.aop.MathCalculator.*(..)) && args(a, b)
                argNames:
                    "a, b"
            @Before
            @After
            @AfterReturning
            @AfterThrowing
        声明式事务:
            @EnableTransactionManagement
            @Transactional
    扩展原理:
        BeanFactoryPostProcessor
        BeanDefinitionRegistryPostProcessor
        ApplicationListener
        SmartInitializingSingleton
        Spring容器创建过程
    web:
        servlet:
            ServletContainerInitializer
            @HandlerTypes
            ServletContext:
                HttpServlet
                Filter
                ServletContextListener
        SpringMVC:
            AbstractAnnotationConfigDispatcherServletInitializer:
                getRootConfigClasses()
                getServletConfigClasses()
                getServletMappings()

servlet的底层原理

1、web容器在启动的时候,会扫描每个jar包下的META-INF/services/javax.servlet.ServletContainerInitializer
2、加载这个文件指定的类SpringServletContainerInitializer
3、spring的应用一启动会加载感兴趣的WebApplicationInitializer接口下的所有组件
4、并且为WebApplicationInitializer组件创建对象(组件不是接口,不是抽象类)
    1)、AbstractContextLoaderInitializer,创建根容器;createRootApplicationContext()
    2)、AbstractDispatcherServletInitializer,
        创建一个web的ioc容器,createServletApplicationContext();
        创建了DispatcherServlet,createDispatcherServlet();
        将创建的DispatcherServlet添加到ServletContext中,getServletMappings();
    3)、AbstractAnnotationConfigDispatcherServletInitializer注解方式配置的DispatcherServlet初始化器
        创建根容器,createRootApplicationContext(),getRootConfigClasses();传入一个配置类
        创建web的ioc容器,createServletApplicationContext();
            获取配置类;getServletConfigClasses();

总结:
    以注解方式来启动SpringMVC;实现AbstractAnnotationConfigDispatcherServletInitializer;
    实现抽象方法指定DispatcherServlet的配置信息;

续更,学习中。。。

详细笔记mark别人的 -> https://www.cnblogs.com/joe-tang/p/12274714.html

相关文章

  • 深入学习java笔记-17.Spring注解驱动开发汇总

    Spring注解驱动开发知识汇总 Spring注解,思维导图 servlet的底层原理 续更,学习中。。。 详细笔...

  • 【视频分享】尚硅谷Java视频教程_Spring注解驱动开发视频

    尚硅谷Java视频教程_Spring注解驱动开发视频教程 《Spring注解驱动开发》是一套帮助我们深入了解Spr...

  • 解读注解使用

    一、注解:深入理解JAVA注解 要深入学习注解,我们就必须能定义自己的注解,并使用注解,在定义自己的注解之前,我们...

  • 注解Annotation

    目前注解驱动开发已经成为主流。框架大部分都使用了注解简化代码,提高开发效率。因此掌握并深入理解注解是一个开发工程师...

  • java自定义注解

    深入理解Java:注解(Annotation)自定义注解入门 要深入学习注解,我们就必须能定义自己的注解,并使用注...

  • Java梳理之理解注解

    现在的Java开发框架大多都会使用注解,如Spring,所以这里梳理一下注解方面,为之后深入理解框架做铺垫。 注解...

  • 推荐技术相关书籍

    代码整洁之道 重构 敏捷软件开发 原则、模式与实践 测试驱动开发 深入理解Java虚拟机 Java并发编程实战 硝...

  • Spring注解驱动开发声明式事务功能

    前面我们学习了Aop的注解驱动开发及相关源码的解读过程,从本节开始我们以同样的套路来学习声明式事务的注解开发及源码...

  • Spring AOP核心类解析,这是最全的一篇了!!

    写在前面 最近,不少小伙伴在催更【Spring注解驱动开发】专题,好吧,【Spring注解驱动开发】专题确实有很长...

  • Spring注解开发

    一、Java Web注解开发 使用Java Web 注解开发可以不用不用任何xml配置文件来开发Java Web。...

网友评论

      本文标题:深入学习java笔记-17.Spring注解驱动开发汇总

      本文链接:https://www.haomeiwen.com/subject/ugkraqtx.html