IOC容器设计理念与核心注解的使用

Spring面试题及详细答案 125道(1-15) -- 核心概念与基础1 摘要 本文系统介绍了Spring框架的核心概念与面试常见问题,涵盖IoC容器、依赖注入、Bean生命周期等关键知识点。详细解析了Spring的设计理念(轻量级、松耦合、AOP)、核心模块(容器、数据访问、Web等)及优势(开发效率高、集成性强)。重点对比了构造器注入与setter注入的适用场景,分析了singleton和prototype作用域的区别与注意事项,并阐述了BeanFactory与ApplicationContext的功能差异。同时提供了XML、注解和Java配置三种Bean定义方式,完整描述了 阅读详情

一、IOC容器设计理念 依赖倒置原则。
    <1>ioc的思想最核心的地方在于,资源不由使用资源的双方管理,而由不使用资源的第三方管理,这可以带来很多好处。 
        第一,资源集中管理,实现资源的可配置和易管理。
        第二,降低了使用资源双方的依赖程度,也就是我们说的耦合度。    
    <2>BeanFacotry的bean是延时加载的,ApplicationContext是非延时加载的
二、spring IOC容器底层注解使用。
<1>基于读取配置类的形式定义Bean信息
@Configuration 配置类注解类似xml文件
@Bean 可以通过value给bean定义name
@ComponentScan 
    包扫描: basePackages = {"包的路径"}
    排除用法: 
    excludeFilters = {
        @ComponentScan.Filter(type = FilterType.ANNOTATION,value = {Controller.class}),
        @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE,value = {TulingService.class})
    }
    包含用法: 需要把useDefaultFilters属性设置为false, 
    includeFilters = {
        @ComponentScan.Filter(type = FilterType.ANNOTATION,value = {Controller.class, Service.class})
    },useDefaultFilters = false

    @ComponentScan.Filter  type的类型(常用)
        a)注解形式的FilterType.ANNOTATION    
              @Controller  @Service  @Repository  @Compent
        b)指定类型的 FilterType.ASSIGNABLE_TYPE 
              @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE,value = {TulingService.class})
        c)自定义 FilterType.CUSTOM

public class TestFilterType implements TypeFilter {
     @Override
     public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory) throws IOException {
            //获取当前类的注解信息
           AnnotationMetadata annotationMetadata = metadataReader.getAnnotationMetadata();
           //获取当前类的class的源信息
           ClassMetadata classMetadata = metadataReader.getClassMetadata();
           //获取当前类的资源
           Resource resource = metadataReader.getResource();
           if(classMetadata.getClassName().contains("Dao")){
               return true;
           }
           return false;
    }
 }


<2>、配置Bean的作用域对象
    a、在不指定@Scope的情况下,所有的bean都是单实例的bean,而且是饿汉加载(容器启动实例就创建好了)
        <1>singleton 默认单例 
        <2>prototype 多例 IOC容器启动的时候,并不会创建对象,而是在第一次使用的时候才会创建
    b、@Lazy 主要针对单实例的bean 容器启动的时候,不创建对象,在第一次使用的时候才会创建该对象
<3>、IOC 容器中添加组件的方式
    a、@CompentScan +@Controller @Service @Respository  @compent
    b、@Bean
    c、@Import
<4>、Bean的初始化方法和销毁方法.
    @Bean(initMethod = "init",destroyMethod = "destroy")
    针对单实例bean的话,容器启动的时候,bean的对象就创建了,而且容器销毁的时候,也会调用Bean的销毁方法
    针对多实例bean的话,容器启动的时候,bean是不会被创建的而是在获取bean的时候被创建,而且bean的销毁不受IOC容器的管理
<5>、组件赋值 @Value  + @PropertySource
     @Value("值")  @Value("#{28-8}")   @Value("${person.lastName}")  @PropertySource(value = {"classpath:person.properties"})
     注意:
         Spring @Value解析${} ,需要手动在配置类声明一个STATIC PropertySourcesPlaceholderConfigurer bean

 @Bean
 public static PropertySourcesPlaceholderConfigurer propertyConfigInDev() {
       return new PropertySourcesPlaceholderConfigurer();
 }


<6>、自动装配
    @AutoWired  可以标注在成员变量 set方法 及构造方法上
    自动装配首先时按照类型进行装配,若在IOC容器中发现了多个相同类型的组件,那么就按照属性名称来进行装配
    如果容器中没有,则会抛出异常 No qualifying bean of type 'xxx' available
    若想不抛异常 ,我们需要指定 required为false的时候可以了 @Autowired(required = false)

Android 13 GMS认证避坑:手把手教你搞定RKP配置,解决GTS测试fail 本文详细解析Android 13 GMS认证中的RKP(远程密钥配置)全流程,提供GTS测试失败的深度解决方案。从RKP核心概念到实战配置技巧,帮助开发者规避常见陷阱,确保设备顺利通过Google安全认证,特别适合需要快速掌握Android13 GMS认证的工程师参考。 阅读详情

相关推荐

工业质检实战:用海康VisionMaster的BLOB分析搞定PCB焊点缺陷检测

本文详细介绍了如何利用海康VisionMaster平台的BLOB分析技术,构建一套针对PCB焊点缺陷的自动化视觉检测方案。文章从核心原理出发,重点阐述了如何通过动态阈值分割和模板匹配定位,克服工业现场光照不均、位置偏移等挑战,实现虚焊、漏焊等缺陷的精准、稳定检测,并提供了实战调优与系统集成的关键思路。

weixin_29091105的博客 560

IOC容器设计理念和源码解读

⼀、IOC核⼼理论回顾 知识点: 1. Ioc理念概要 2. 实体Bean的创建 3. Bean的基本特性 4. 依赖注⼊ 1、Ioc理论概要 在JAVA的世界中,⼀个对象A怎么才能调⽤对象B?通常有以下⼏种⽅法。 类别描述时间点 外部传⼊ 构造⽅法传⼊创建引⽤对象时 属性设置传⼊设置对象状态...

chuiyi3047的博客 431

spark3.x 写入hudi报错

【代码】spark3.x 写入hudi报错。

W2484980893的博客 1578

2.IOC设计理念(理解控制反转,实现IOC容器实例,Spring中对IOC的支持)

本博客解释了什么是控制反转,并且以一个实际的例子来实现了一个简单的IOC容器并提供测试案例,且介绍了在Spring中如何使用其提供的IOC容器进行编程。

c1776167012的博客 992

ADC(三)Guard ring的设计艺术:从单元到系统的隔离策略

本文深入探讨了ADC设计中Guard ring(保护环)从单元到系统的多层次隔离策略。文章分享了从新手到专家的认知升级过程,详细分析了在单元内部进行微隔离、在模块间建立噪声屏障以及在系统层面规划全局隔离带的实用方法与设计艺术,强调了Guard ring对于提升混合信号电路性能和可靠性的关键作用。

weixin_28312391的博客 150

Tesseract-Ocr踩坑下载以及进行检验

1 OCR,即Optical Character Recognition:光学字符识别,是指通过扫描字符,然后通过其形状将其翻译成电子文本的过程。下载完成后进行解压找到这两个,然后复制到之前下载Tesseract-Ocr的tessdata文件下。可能会出现报错说chi下载的问题咱们不用管继续ok让它先下载完毕,后续会有下载chi的步骤。四、检验tesseract使用(将以下图片进行下载我这里将以下图片命名为3.png)我这里选的是2024年的版本如果下载不了;4 在安装的时候(找到下载的exe文件,双击)

m0_51428325的博客 1915

Spring IoC 核心原理:从对象管理到五大注解与 @Bean 的使用

本文我们梳理了Spring IoC的核心思想,了解了其通过反转控制将对象创建与管理交给Spring容器的逻辑,也通过具体代码示例掌握了Bean的获取方式。同时,剖析了五大注解(@Controller、@Service、@Repository、@Configuration、@Component)的用法、分层场景差异,以及@Bean注解的使用规则,也明确了各类注解BeanName的默认规则与修改方式。

wxy963的博客 659

QMI8658姿态传感器实战:从校准到自检的完整避坑指南

本文详细解析了QMI8658姿态传感器的校准与自检流程,提供了从硬件环境搭建到高级功能开发的完整避坑指南。通过真实案例揭示电源设计、接口优化、温度补偿等关键细节,帮助开发者提升传感器精度和可靠性,适用于工业级应用场景。

weixin_29184075的博客 455

Spring框架IoC核心详解

IoC(Inversion of Control:控制反转) 是一种设计思想,而不是一个具体的技术实现。IoC 的思想就是将原本在程序中手动创建对象的控制权,交由 Spring 框架来管理,由Spring容器管理bean的整个生命周期。通俗来说就是IoC是设计思想,DI是实现方式。通过反射实现对其他对象的控制,包括初始化、创建、销毁等,解放手动创建对象的过程,同时降低类之间的耦合度。在 Spring 中,是 Spring 用来实现 IoC 的载体,

m0_46995061的博客 696

PyQt5数据库开发3 6 QSqlQuery完整实操案例【图文详解】

PyQt5数据库开发3 6.1 QSqlQuery实操案例【多图详解】,本文有点长,主要每一个步骤都有对应的图文教程!!!

qq_53317005的博客 2962

021、反激变换器的软启动设计

本文分享了反激变换器软启动设计的实践经验。作者通过一次上电炸机事故引出软启动的重要性,分析了启动瞬间电流冲击和环路饱和问题。介绍了三种软启动方案:效果差的RC电路、推荐使用的数字芯片方案以及分立元件实现方法,重点指出数字方案的一致性优势。文章还探讨了软启动与过流保护的配合问题,提供了实测波形、温度影响等调试要点,并总结出软启动时间选择、批量生产一致性等实用建议。最后强调软启动是电源可靠性的关键设计,不应为节省成本而忽略。全文包含多个工程实践细节,对电源设计人员具有重要参考价值。(149字)

Jack010169的博客 175

1. spring5源码 -- IOC容器设计理念和核心注解的作用

可以学习到什么? 0. spring整体脉络 1. 描述BeanFactory 2. BeanFactory和ApplicationContext的区别 3. 简述SpringIoC的加载过程 4. 简述Bean的生命周期 5. Spring中有哪些扩展接口及调用机制 一. spring源码整体脉络介绍及源码编译 1.1. 什么是IOC ioc是控制反转, 这是一种设计理念, 用来解决的是层和层之间, 类和类之间的耦合问题. 比如,现在有A, B两个类, 在A类中引用了B类. 那么如果有一天, B类要被替换

weixin_54826123的博客 246

ESP32 VSCode开发环境配置

ESP32 VSCode开发环境配置

qq_53529450的博客 507

IOC 容器设计理念与核心注解

1.ioc 和 DI 需要解决最根本的问题是什么? 答:最需要解决的问题是bean 的循环依赖的问题 2.BeanFactory 和 applicationContext 的本质区别? 答:加载的时机不同,BeanFactory 是懒加载,applicationContext 是非懒加载的,可以指定为懒加载,是对BeanFatory 的扩充 3.什么是控制反转,什么是依赖注入?...

xinbumi的博客 289

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Spring IOC容器设计理念与常见底层核心注解

一、Spring 框架整体功能介绍 Spring Framework是一个Java平台,为开发Java应用程序提供全面的基础架构支持。Spring处理基础架构,因此您可以专注于您的应用程序。 Spring允许您从“普通旧Java对象”(POJO)构建应用程序,并以非侵入方式将企业服务应用于POJO。此功能适用于Java SE编程模型以及完整和部分Java EE。 作为应用程序开发人员,您可以从Sp...

org_hjh的博客 602

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

1.IOC容器设计理念与核心注解的使用

Spring

weixin_43761434的博客 234

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Java架构篇章-01Ioc容器设计理念和核心注解的使用

01Ioc容器设计理念和核心注解的使用 one question— BeanFactory 和 applicationContext 的本质区别是什么? csdn链接↑ 1. applicationContext 是 BeanFactory 的一个功能的扩展 2. BeanFory 启动时候不去实例化bean,调用的时候才实例化对象(懒加载). ApplicationContext的启动即实例化bean(非懒加载,但可以指定为懒加载) Spring容器集成图: 这个图肯定很多人见过了,我们主要看画圈圈的3

ppppppushcar的博客 196

spring IOC容器设计理念与核心注解的使用

bean的扫描和启动 bean的生命周期 ico容器如何解决bean的循环依赖问题 aop的源码解析 事务源码解析

m0_37564426的博客 240

Spring从入门到入土——IOC概述及推导

前面第一篇我们认识了什么是Spring以及通过官网的指引,编写并启动了第一个属于我们的Spring程序,虽然程序启动了,但是对于里面的内容以及如何实现的我们还是不是十分的清楚,那么接下来我们就首先先来了解一下Spring中的一个核心概念——IOC IoC(控制翻转)推导 之前的代码架构 通常我们以前实现项目的时候会分为这么几步: 先写一个UserDao接口 public interface UserDao { public void getUser(); } 再去写一个Dao的

冢狐的私人空间 2253

深入理解 Spring:注解解析、AOP 与底层原理揭秘

本文深入解析了Spring框架的核心机制,包括常用注解和AOP原理。重点介绍了@Component、@Autowired、@Value等注解的功能及实现原理,阐述了AOP通过动态代理实现横切逻辑的机制。同时分析了Spring的底层设计,包括Bean生命周期、BeanDefinition解析和IoC容器本质。Spring通过"注解驱动+IoC+AOP"的设计理念,结合反射和动态代理等技术,实现了高度解耦的企业级应用框架,展现了其作为Java生态核心框架的强大能力。

m0_46421522的博客 869

Spring笔记(一)------IOC和bean以及常用注解

Spring 一、Spring概述 1.概念:Spring 是一种轻量级开发框架,旨在提高开发人员的开发效率以及系统的可维护性。我们一般说 Spring 框架指的都是 Spring Framework,它是很多模块的集合,使用这些模块可以很方便地协助我们进行开发。Spring的两大核心是IOC和AOP。 2.Spring的体系架构(有什么模块) Spring Core: 基础,可以说 Spring 其他所有的功能都需要依赖于该类库。主要提供 IoC 依赖注入功能。 Spring Aspects : 该模块

Cherish@WVv 368

Spring 面试题

控制反转即IOC (Inversion of Control),它把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组件的装配和管理。所谓的“控制反转”概念就是对组件对象控制权的转移,从程序代码本身转移到了外部容器。Spring IOC 负责创建对象,管理对象(通过依赖注入(DI),装配对象,配置对象,并且管理这些对象的整个生命周期。控制反转IOC是一个很大的概念,可以用不同的方式来实现。

逍遥人世欢 1063

Hyperf的DI 容器、注解路由、AOP 的庖丁解牛

组件核心机制价值性能关键DI 容器反射 + 依赖解析解耦对象创建启动时解析,运行时直接 new注解路由启动扫描 + 缓存声明式路由路由表缓存,运行时 FastRouteAOP代理模式 + 代码生成横切关注解耦仅代理标注类,运行时微开销✅终极口诀“DI 解耦靠反射,注解路由启动扫;AOP 代理织切面,三剑合璧性能高。Hyperf 不是“注解魔法”,而是“启动时元编程 + 运行时高性能”的精密工程——掌握其原理,你就能在 Swoole 的常驻内存世界中,构建既优雅又高效的系统。

长风破浪会有时的博客 985

Spring IOC

SpringIoc使用基础教程

magic_818的博客 395

Spring Framework

本章介绍了Spring框架对反转控制(IoC)原则的实现。IoC也被称为依赖注入(DI)。它是一个过程,对象仅通过构造参数、工厂方法的参数或在对象实例被构造或从工厂方法返回后在其上设置的属性来定义其依赖关系(即它们与之合作的其他对象)。然后容器在创建 bean 时注入这些依赖关系。这个过程从根本上说是Bean本身通过使用直接构建类或诸如服务定位模式的机制来控制其依赖关系的实例化或位置的逆过程(因此被称为控制反转)。和包是Spring Framework的IoC容器的基础。

张小鱼的博客 569

springboot 的含义及其一些注解的介绍

一、spring 的含义 spring是为了解决应用复杂性而产生的框架,它吸取了java ee容器管理的优点,提供了一个iod容器来管理bean,并通过aop方式来增强bean的功能,不同的是它并没有像java ee那样详细规定容器提供的是何种服务和容器里运行的具体组件类型。spring只提供了两种机制,控制反转(ioc)和面向切面(aop),来提供任意的服务和增强bean的任意特性,使得spr

w_iceh的博客 2833
上一篇: 关联mysql失败_Server returns invalid timezone. Go to ‘Advanced‘ tab and set ‘serverTimezon‘
下一篇: Tomcat生产环境应用、性能优化
辉少_
博客等级 码龄10年 30粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值