码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 面试题: Spring中Bean的实例化和Bean的初始化有什么区别?


    Spring中Bean的实例化和Bean的初始化有什么区别?

    • 背景
    • 答案
    • 扩展知识
      • 什么是实例化
      • 什么是初始化
    • 个人评价
    • 我的回答

    背景

    想换工作, 看了图灵周瑜老师的视频想记录一下, 算是学习结果的一个输出.

    答案

    Spring 在创建一个Bean对象时, 会先创建出一个Java对象, 会通过反射来执行类的构造方法, 从而得到一个Java对象, 这个过程我们通常叫做Spring Bean的实例化.

    得到Java对象后, 会进行依赖注入, 依赖注入之后会进行初始化, 而 Bean 的初始化就是调用前面创建出来的Java对象中特定的方法, 比如Java对象实现了 InitializingBean接口, 那么初始化的时候就会执行Java对象中的 afterPropertiesSet(), Spring 只会执行这个方法, 并不关心做了什么, 我们可以再这个方法中去对某个属性进行校验, 或者直接给某个属性赋值都是可以的, 反正 Bean 的初始化就是执行 afterPropertiesSet(), 或者执行 init-method 指定的方法. 例如下面的两段代码:

    @Component
    public class OrderService implements InitializingBean {
        @Override
        public void afterPropertiesSet() {...}
    
        /**
         * 用户自定义需要初始化的方法
         */
        public void customInitMethod() {...}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    public class AppConfig {
        /**
         * 注册Bean, 并指定初始化方法
         *
         * @return OrderService
         */
        @Bean(initMethod = "customInitMethod")
        public OrderService generateOrderService() {
            return new OrderService();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    扩展知识

    什么是实例化

    其实就是调用构造方法(这里是通过反射的方式), 生成一个Java Bean.

    什么是初始化

    其实本质就是在合适的时机去调用指定的方法.

    个人评价

    2023年10月5日14:59:49
    感觉很多面试题, 需要我们去理解考察的点事什么? 就这个题目而言, 我认为就是一个概念统一的问题. 候选人是怎么理解实例化和初始化的.

    我的回答

    首先我想和您描述我对这个题目的理解. 我先解释一个什么是Sprign Bean实例化, 什么是Sprign Bean初始化?
    如果这两个概念理解了, 他们的区别也就显而易见了.

  • 相关阅读:
    城市广告牌安全传感器特点有哪些?
    win10连接远程服务访问文件提示:文件共享不安全,不能连接文件共享
    ubuntu20.04 + kiosk + chrome打造一体机系统
    2.01_python+Django+mysql实现pdf转word项目_项目开发- 创建Django项目
    解决Spring子事务新开事务REQUIRES_NEW仍被主事务回滚问题
    Python生成exe文件
    前端工作一年半,离职了!!!
    Spring Security密码加密
    使用海伦公式求三角形面积C++
    【算法康复训练③】剑指offer P3
  • 原文地址:https://blog.csdn.net/xiaozhengN/article/details/133579796
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号