Spring的自动装配方法

生信物种注释软件Kraken2+Bracken的安装与使用 一、软件安装与数据库下载 1.Kraken2安装 Kraken2是一个基于k-mer算法的高精度宏基因组序列分类软件,能够快速的将测序reads进行物种分类。 使用conda一键安装,要先安装好anaconda或者miniconda conda install -y kraken2 输入krakek2 --help 出现如下所示帮助文档,则表示安装成功。 2.Bracken安装 bracken是一种从宏基因组数据中高度准确的计算物种丰度的统计方法。 同样使用conda一键安装 conda install - 阅读详情



Spring的装配方式

我们已经了解了依赖注入的基本原理,初识了@Component和@AutoWired标注的用法。为一个应用中的Beans的配置依赖注入关系的过程称之为装配(Wiring)。

Spring提供三种装配方式:

  • 基于标注的自动装配
  • 基于XML配置的显式装配
  • 基于Java配置的显式装配

之前的示例就是使用自动装配。通过给Java类增加相应的标注,就能够启用Spring隐式的Bean发现机制,并自动完成装配过程。我们在开发中应该尽可能使用自动装配,足以应付开发中的绝大多数情况。

Spring通过两个特性实现自动装配:

  • 构件扫描:自动扫描和创建Spring应用上下文中的Beans
  • @Autowired标注:自动建立Spring Beans之间的依赖关系

在某些情况下,基于XML配置和基于Java配置的显式装配会有用武之地,比如实例化一个第三方库中的Bean。这种情况下,Java配置和XML配置我们优先使用Java配置,因为这是一种类型安全的方式,能够在编译时就尽早发现错误。

我们先来了解自动装配吧!

启用自动扫描

如何启动自动扫描机制呢? 在Spring Boot应用中,加入@SpringBootApplication标注就能启动自动扫描。

package com.tianmaying;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

我们也可以通过XML配置或者Java配置的方式来启动自动扫描。

XML配置方式

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

<context:component-scan base-package="com.tianmaying" />
</beans>

<context:component-scan>标签将会开启Spring Beans的自动扫描,并可设置base-package属性,表示Spring将会扫描该目录以及子目录下所有被@Component标注修饰的类,对它们进行装配。

Java配置方式

package com.tianmaying.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan(basePackages = "com.tianmaying")
public class BlogSystemConfig {
}
  • @Configuration表示这个Java文件是一个配置文件,这类Java代码的作用在于配置,要和普通的Java代码区分开发,因此一般我们需要将其放在一个专门的包中,在代码例子中是com.tianmaying.config。

  • @ComponentScan表示开启Spring Beans扫描,类似于XML配置,这里也可以可以设置basePackages属性。

这种字符串形式的表示虽然可以,但是不具备“类型安全”,因此Spring也提供了更加类型安全的机制,即通过类或者接口来设置扫描机制的目标目录。通过这种设置,会将类A和类B所在的目录作为扫描的目标目录。

类型安全大家可以这样理解:

  • 如果使用字符串的形式,即使类名写错了,在开发时是发现不了的,会在运行时抛出异常。

  • 而使用Java类的形式,类名写错的话,编译时就会提示错误,比如Eclipse中就会提示找不到类的错误信息,这就避免了这种情况下的运行时异常,因此是更加安全的。

Spring Beans的命名

@Component用于定义一个Spring Bean。启动了自动扫描后,被@Component标注的类都自动会注册为Spring Beans。比如,我们可以将UserDao和PostDao注册为Spring Beans:

@Component
public class UserDao {
    ...
}
@Component
public class PostDao {

    @Autowired
    private UserDao userDao;

    ...
}

在Spring上下文中,每个Bean都有自己的ID。Spring扫描过程中所创建的Bean都有默认的ID,这个ID为将类名首字母小写形成的字符串。

如果我们希望给某个类对应的Bean取特点的名字,则可以给@Component标注传入指定的参数,比如:

@Component("customizedName")
public class UserDao {
    ...
}

自动装配Bean

@Autowired标注可以作用在以下四种地方

  • 构造函数
  • 成员变量
  • Setter方法
  • 普通方法

通常情况下,我们通过给成员变量加@Autowired标注就能满足开发中的大部分场景。

回到博客应用中,我们已经为PostDao和UserDao增加标注@Component,这样就能注册为Spring Bean,被`Service`类所使用。

同样,PostService和UserService也可以用@Component进行标注,通过在私有属性上添加@Autowired标注,将其所依赖的Dao类注入其中。

@Component
public class PostService {

    @Autowired
    private PostDao postDao;

    ...
}
@Component
public class UserService {

    @Autowired
    private UserDao userDao;

    ...
}

最后在Servlet中,可以注入Service,比如IndexController类中:

@WebServlet("")
public class IndexController extends HttpServlet {

    @Autowired
        private UserService userService;

        ...
}

可选装配

使用自动装配时,如果在应用上下文中,对应类型的Bean有且只有一个,则会自动装配到该属性上。

如果没有找到对应的Bean,应用会抛出对应的异常,如果想避免抛出这个异常,则需要设置@Autowired(required=false)。

这个属性应当谨慎使用,我们可能需要处理NullPointerException的问题。


作者:David
链接:https://zhuanlan.zhihu.com/p/20676907
来源:知乎

数控弯管机xyz转换ybc的算法_数控弯管机技术的更新和应用.pdf 您所在位置:网站首页 > 海量文档&nbsp>&nbsp汽车/机械/制造&nbsp>&nbsp机械/模具设计数控弯管机技术的更新和应用.pdf3页本文档一共被下载:次,您可全文免费在线阅读后下载本文档。 下载提示1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。2.该文档所... 阅读详情

相关推荐

自动驾驶仿真(五)—— 基于Carsim、Prescan、Simulink的联合仿真

自动驾驶仿真五——基于Carsim、Prescan、Simulink的联合仿真1. 联合仿真流程2. CarSim联合仿真配置要点3. Prescan联合仿真配置要点4. Carsim、Prescan、Simulink联合仿真结果5. 参考学习的书目教材 博主前面的博文已经介绍了Carsim和Prescan各自与Matlab/Simulink的相关联合仿真应用实例,并且论述过几款软件各自的优势及用法,CarSim适合动力学模型的建立,PreScan适合行车场景的搭建,Simulink适合控制算法的设计及信号

zhudj08的博客 1万+

Spring自动装配

Spring自动装配

qq_41512902的博客 5345

科研党必备:用MATLAB批量处理.mat文件数据的3种高效方法

本文为科研人员提供了使用MATLAB批量处理.mat文件数据的三种高效方法,涵盖智能数据加载、专业可视化与自动化报告生成。通过构建自动化框架、多维度数据画图策略及批量处理流程,帮助用户显著提升数据处理效率与图表专业性,解决海量实验数据的管理与分析难题。

weixin_29089057的博客 71

【Spring笔记05】Spring的自动装配

自动装配,是指:Spring自动的建立Bean对象和Bean对象之间的依赖关系,而不需要我们开发人员手动的进行设置,这个过程就叫做自动装配。自动装配,其实就是和之前介绍的依赖注入是一样的,只不过我们进行依赖注入的时候,需要开发人员在XML配置文件里面,通过【<property>】标签或者【<constructor-arg>】标签,手动的进行属性赋值,可以想到,如果项目中有很多对象都需要赋值,那这样就需要编写许多的XML配置代码,这不利于XML配置文件的维护。

yh250648050的博客 4118

《AI应用架构师必学:企业AI能力地图构建的高级技巧》

企业AI能力地图,简单来说,是一种可视化工具,它展示了企业在AI领域所具备的各种能力及其相互关系。就如同城市地图展示城市的街道、建筑和设施一样,AI能力地图呈现了企业在数据处理、模型开发、算法应用等多个方面的能力布局。

AGI×大数据,开启智能时代的认知跃迁;解码AGI,赋能数据驱动的智能革命。 819

UE4-(反射)场景采集之场景采集2D

一、场景采集分为两种:场景采集2D、场景采集立方体 场景采集2D:采集2D图片模式。 操作: 1.选择场景采集2D,是一个摄像机的物体,摆放到场景中。 2.在文件夹空白处创建纹理,一定要注意创建纹理的格式, 纹理分为立方体渲染目标和渲染目标,此处我们使用的是2D模式,所以选择渲染目标(Texture Render Target2D)。创建后重命名为RenderTextue2D。 3.选择场景中刚拖入的 SceneCapture2D 摄像机在细节面板的Scene Capture 将..

Stone的博客 4601

springBoot自动装配

为了简化配置,使spring的使用更加方便,例如:可以回忆一下springboot中是如何继承redis的。使用springboot后集成常用的第三方框架变得非常简单了。springboot starter带来的问题starter使SpringBoot集成第三方框架变得简单,但对刚刚上手SpringBoot的人来说,可能只知道配置属性是在application.xml或application.yml中添加,但他们各自的属性都有哪些,具体怎么配置,却无从下手。

qq_62898618的博客 1万+

看懂特斯拉IMU底层逻辑,才懂农业机器人不可替代的核心技术壁垒

在自动驾驶与具身智能赛道,特斯拉彻底重构了IMU(惯性测量单元)的技术定位,打破行业“IMU仅为辅助补盲配件”的固有认知,将其从底盘附属硬件升级为纯视觉感知体系的物理核心基座。依托500–1000Hz超高刷新率、无外部依赖的惯性感知能力、端到端神经网络融合架构,特斯拉实现了“视觉感知环境、IMU定义运动”的技术闭环,摆脱对激光雷达、高精地图、卫星定位的强依赖。这套技术逻辑落地农业机器人赛道,不再是技术优化,而是规模化落地的生存刚需。城市自动驾驶属于结构化稳定场景,IMU仅作误差修正的锦上添花;

getusushu的博客 49

springboot自动装配

文章目录1、自动装配是什么及作用2、spring自动装配的原理2.1、启动类上注解的作用@SpringBootApplication@SpringBootConfiguration@EnableAutoConfiguration@AutoConfigurationPackage@Import(AutoConfigurationImportSelector.class)@ComponentScan2.2、springboot自动装配的流程3、相关注解的作用@Conditional 1、自动装配是什么及作用 s

好好玩的博客 4万+

使用自制的NTC测量模块测试Plecs的热仿真效果

可以测试:您完全可以用这个模型来测试热仿真。NTC 模型是连接电气域和热域的关键桥梁。实现闭环:通过这种方式,您创建了一个高度真实的正反馈闭环系统:负载增加 -> 损耗增加 -> 温度升高 -> NTC 阻值变化 -> 控制电路可能因此调整(如降低频率或电流)-> 损耗变化 -> 温度变化。应用场景:这对于设计过温保护 (OTP) 电路风扇控制系统以及分析热失控条件非常有用。单位:确保热域中使用的单位( Kelvin 或 Celsius )与您的 C-Script 模型输入期望的单位一致。

311

YOLOv11的对比学习预训练改进-(通过SimCLR预训练增强特征提取)

本文介绍了将SimCLR对比学习预训练与YOLOv11目标检测模型相结合的创新方法。文章首先概述了目标检测领域的发展现状和YOLOv11的架构优化,包括主干网络、特征金字塔和检测头的改进设计。其次详细解析了SimCLR对比学习的核心原理,涵盖数据增强、投影头设计和NT-Xent损失函数。最后探讨了如何将对比学习与目标检测有效结合,通过特征空间对齐和渐进式微调策略提升模型性能。该方法显著增强了特征提取能力,提高了检测精度和训练效率,特别是在小目标和遮挡目标的检测上表现突出。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 685

第六篇 Spring 自动装配

Bean 与 Bean 之间建立依赖关系的行为称为“装配”,使用注解可以帮忙我们从繁琐的xml配置中解脱出来,完成Bean的自动装配。

Java 技术专栏,从入门到精通,熟悉企业级开发 1537

基于Simulink实现电动汽车制动能量回收系统的仿真

通过上述步骤,我们成功实现了基于Simulink的电动汽车制动能量回收系统的仿真研究。该系统能够全面评估制动能量回收系统的性能,验证控制策略的有效性,并通过优化设计提高能量回收效率和制动安全性。引入智能预测:结合人工智能技术,实现更智能的能量回收控制策略。扩展功能:增加对多种车型和制动场景的支持,提升系统通用性。实验验证:将仿真模型应用于实际硬件,进行实验验证,评估其在实际工况下的表现。

xiaoheshang_123的博客 336

Spring注解驱动之方法、构造器上的自动装配

Spring注解驱动

抽象的螺旋 528

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Spring 自动装配和 Method Injection(方法注入)

在顶层 标签中,default-autowire-candidates 属性可以接受多种模式,例如,限制名称以 Repository 结尾 bean 才能进行自动装配,可以配置这个属性的值为:*Repository,如果需要提供更多模式,可以用逗号分隔符在列表中定义他们。当一个单例 bean 需要与另一个单例 bean 的协作,或者一个非单例 bean 需要与另一个非单例 bean 的协作时,通常通过将一个 bean 定义为另一个 bean 的属性来处理依赖关系。

swadian2008的博客 569

SAP B1中文培訓教材_SDK

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

Spring 自动装配;方法注入

通过配置defalut—zutowire属性,Spring IOC容器可以自动为程序注入Bean;默认是no(不启用自动装配)。 default—autowire的类型有: byName:通过名称自动进行匹配 byType:通过属性自动进行匹配 示例如下: 一个实体类people beans.xml配置: <?xml version="1.0" encodin...

diku9497的博客 92

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Spring Boot 启动原理揭秘:从 main 方法到自动装配

Spring Boot 是由 Pivotal 团队推出的一个开源框架,旨在简化 Spring 应用的初始搭建和开发。它基于 Spring Framework 构建,提供了一种快速、便捷的方式来构建独立运行的、生产级的应用程序。Spring Boot 的核心理念是“约定优于配置”,这意味着开发者无需手动编写大量 XML 或 Java 配置代码即可快速启动项目。Spring Boot 的启动流程是一套高度封装且高度可扩展的机制,涵盖了从应用启动到上下文初始化、自动装配、Web 服务器启动等多个阶段。

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

Spring注解驱动开发第22讲——如何实现方法、构造器位置的自动装配?我这样回答让面试官很满意!

写在前面 在前面两讲中,我们介绍了如何使用注解来自动装配Spring组件。之前将的都是在类的字段上添加注解,那有没有什么方法可以实现方法、构造器位置上的自动装配呢?今天我们就一起来探讨下如何实现方法、构造器位置上的自动装配。 再谈@Autowired注解 在之前《Spring注解驱动开发第20讲——使用@Autowired、@Qualifier、@Primary这三大注解自动装配组件,你会了吗?》这一讲中,我简单介绍了下@Autowired注解的使用方法。下面,我们再来看下@Autowired注解的源码。

李阿昀的博客 3215

Spring框架中@Bean注解方法形参的自动装配与多Bean处理策略

Bean注解是Spring框架的一部分,用于在配置类中声明一个bean。Spring容器在启动时会自动调用带有@Bean注解的方法,并将返回的实例注册为Spring应用上下文中的bean。@Bean在上面的例子中,myBean()方法被@Bean注解修饰,因此Spring会调用这个方法并注册返回的MyBean实例。通过@Bean注解修饰的方法形参自动装配是Spring框架提供的一种强大的依赖注入机制。它简化了配置,提高了代码的可读性和可维护性。

qq_50412485的博客 564

Spring 标注@Autowired 如果做到自动装配私有变量而不使用set方法的原理

Spring 标注@Autowired 如果做到自动装配私有变量而不使用set方法的原理 熟悉jdk的话就知道,方法就是使用java.lang.reflect.Field类的:Field.setAccessible(true); 将字段设置为‘true’,就可以直接使用set方法为其赋值了。 如果不设置‘true’的话,则会抛出‘java.lang.IllegalAccessExcep...

beginning...... 776

spring4第5课-ioc自动装配+方法注入+方法替换

总结:了解下default-autowire 的三种类型有 byName,byType,constructor,其他2个用到的不算多。--就是bean.xml中 default-autowire的属性值等于多少的问题,三种方式 --> )constructor:和 byType 类似,只不过它是根据构造方法注入而言的,根据类型,自动注入;default-autowire 的类型有 byName,byType,constructor;建议:自动装配机制慎用,它屏蔽了装配细节,容易产生潜在的错误;

ademen的博客 181

Spring开发注解-实现方法、构造器位置的自动装配

Spring开发注解-实现方法、构造器位置的自动装配 Autowired源码解析: 可以看出@Autowired注解不仅可以标注在字段上,而且还可以标注在构造方法CONSTRUCTOR、实例方法ElementType.METHOD以及参数ElementType.PARAMETER上。 @Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD, ElementType.ANNOT

ppppppushcar的博客 399

第五章 Spring4 自动装配、方法注入

Spring 自动装配: 通过配置 default-autowire 属性,Spring IOC 容器可以自动为程序注入 bean;默认是 no,不启用自动装配; default-autowire 的类型有 byName,byType,constructor; byName:通过名称进行自动匹配; byType:根据类型进行自动匹配; constructor:和 b...

fxyyshi的博客 105

自动装配构造器&方法---Spring源码从入门到精通(十三)

上篇文章主要介绍了@Resource和@inject: 1)、这两个都是java的jre规范,之前的@Autowired是spring规范。 2)、@Resource(name="")可以用name指定加载的组件名称,和@Autowired不同,@Autowired默认按类型加载,必须和@Qualifier一起才可以指定名字。 3)、@Resource不可以和@Parimary连用,也不可以用@Autowired(required=false)。 4)、@Inject必须导入mvn包,也不可以用@A

ke1ying的博客 308
上一篇: Java集合的使用:List与Map
下一篇: Java时间日期格式转换
GarfieldEr007
博客等级 码龄15年 7479粉丝 461原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值