Spring - 实例化与延迟实例化
时间:2021-08-09
本文章向大家介绍Spring - 实例化与延迟实例化,主要包括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");
}
}
原文地址:https://www.cnblogs.com/maggieq8324/p/15118088.html
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 浅入浅出 Java ConcurrentHashMap
- 「高并发通信框架Netty4 源码解读(五)」NIO通道Channel详解
- 图解一致性哈希算法,全网(小区局域网)最通俗易懂
- 「高并发通信框架Netty4 源码解读(六)」NIO通道之Socket通道
- 「高并发通信框架Netty4 源码解读(番外篇)」NIO实现大文件传输
- 「高并发通信框架Netty4 源码解读(七)」NIO通道之Selector选择器
- Python与seo工具脚本,360/搜狗相关搜索词采集源码参考
- 逐行阅读Spring5.X源码(八)Mybatis是如何利用MapperScan完成扫描的?
- KEDA|Kubernetes中基于事件驱动的自动伸缩
- 「高并发通信框架Netty4 源码解读(八)」NIO应用——聊天案例及Reactor线程模式
- 「kafka」kafka-clients,java编写生产者客户端及原理剖析
- 「kafka」kafka-clients,java编写消费者客户端及原理剖析
- Kubernetes:如何自动检测和处理弃用的API
- 逐行阅读Spring5.X源码(九)spring利用CGLIB实现动态代理原理剖析
- 逐行阅读Spring5.X源码(十)spring如何解决循环引用,bean实例化过程源码详解