• Spring


    前言

    上一章谈论了模式注解声明组件(Bean)的应用,这里记录下Spring实例化的一些细节。


    实例化

    • 通常我们通过@Component和@Autowired声明、使用Bean
    public class TestController {
        @Autowired
        private TestInter testInter;
    }
    
    public interface TestInter {
        void sayHello();
    }
    
    @Component
    public class TestOne implements TestInter {
        public TestOne () {
            System.out.println("TestOne init");
        }
    
        @Override
        public void sayHello() {
            System.out.println("Hello TestOne");
        }
    }
    
    • 可以看出,默认机制下,应用程序启动时IOC容器就开始实例化对象。

    在这里插入图片描述


    忽略当前要注入的bean

    • 当我们注入一个并没有实例化的对象。
    //@Component
    public class TestOne implements TestInter {
        public TestOne () {
            System.out.println("TestOne init");
        }
    }
    
    public class TestController {
        @Autowired
        private TestInter testInter;
    }
    
    • 此时程序抛出异常

    在这里插入图片描述

    • @Autowired(required = false) 忽略当前要注入的bean
    public class TestController {
        @Autowired(required = false)
        private TestInter testInter;
    }
    
    • 可看出,程序正常启动

    在这里插入图片描述


    @Lazy 延迟实例化

    • 通过@Lazy注解让Bean延迟实例化
    public class TestController {
        @Autowired
        @Lazy
        private TestInter testInter;
    
        @GetMapping(value = "/test")
        public void test(){
            testInter.sayHello();
        }
    }
    
    @Component
    @Lazy
    public class TestOne implements TestInter {
        public TestOne () {
            System.out.println("TestOne init");
        }
    
        @Override
        public void sayHello() {
            System.out.println("Hello TestOne");
        }
    }
    

    在这里插入图片描述

    - End -
    梦想是咸鱼
    关注一下吧
    以上为本篇文章的主要内容,希望大家多提意见,如果喜欢记得点个推荐哦
    作者:Maggieq8324
    本文版权归作者和博客园共有,欢迎转载,转载时保留原作者和文章地址即可。
  • 相关阅读:
    UML中的构件图
    Extjs4 中的gird
    【转载】C#实现线程安全的网络流
    [转载]组播
    【转载】wcf综合运用之:大文件异步断点续传
    【转载】WCF热门问题编程示例(4):WCF客户端如何异步调用WCF服务?
    【转载】特殊用途的IP地址介绍
    [转载]C# HashTable
    c宏定义实战
    c异或加密与解密
  • 原文地址:https://www.cnblogs.com/maggieq8324/p/15118088.html
Copyright © 2020-2023  润新知