Spring装配Bean——通过注解装配Bean

spring bean的简介以及手动装配、自动装配、注解装配且包含实际demo (手动装配+xml): java中定义class,xml定义bean,class是逻辑,bean是注入数据,通过ref指定bean与bean之间的关联关系(自动装配+xml): 通过spring自动扫描代替手动ref指定bean和bean之间的关系,可以设定映射方式是byName还是byType(注解装配+xml): xml只配置支持注解和扫描的bean所在的包,bean的定义不在xml中。java中不仅定义class,还通过注解定义bean实例。因此class既有逻辑,也有数据。 阅读详情

在大多时候,我们会考虑使用注解(annotation)的方式去装配Bean。

1、使用@Component装配Bean

首先定义一下POJO,代码如下:

@Component(value = "role")
public class Role {
    @Value("1")
    private Long id;
    @Value("role_name_1")
    private String roleName;
    @Value("role_note_1")
    private String note;
}

解释一下上面的注解:

  • 注解@Component代表Spring IoC会把这个类扫描生成Bean实例,而其中的value属性代表这个类在Spring中的id,这相当于XML方式定义的Bean的id,也可以简写成@Component(“role”)。
  • 注解@Value代表的是值的注入。

现在有了这个类,但是还不能进行测试,因为Spring IoC并不知道需要去哪里扫描对象,这个时候可以使用一个Java Config 来告诉它,代码如下:

@ComponentScan
public class PojoConfig {

}

这个类十分简单,几乎没有什么逻辑

  • 包名要和上面类的包名保持一致
  • @ComponentScan代表进行扫描,默认是扫描当前包的路径,POJO的包名和它保持一致才能扫描,否则是没有的。

这样之后我们就可以进行测试:

package Juice.test;

import Juice.main.pojo.PojoConfig;
import Juice.main.pojo.Role;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class AnnotationMain {
    public static void main(String[] args){
        ApplicationContext context=new AnnotationConfigApplicationContext(PojoConfig.class);
        Role role=context.getBean(Role.class);
        System.out.println(role.getId());
    }
}

@ComponentScan存在着两个配置项:第一个是basePackages,它可以配置一个Java包的数组,Spring会根据它的配置扫描对应的包和子包,将配置好的Bean装配起来;第二个是basePackageClasses,它可以配置多个类,Spring会根据配置的类所在的包,为包和子包进行扫描装配对于配置的Bean。

2、自动装配——@Autowired

@Autowired主要是注解注入对象,关于这个问题,在注解中略微有点复杂,在大部分情况下建议使用自动装配,因为这样可以减少配置的复杂度。
下面我们来测试自动装配。

package Juice.main.service;

import Juice.main.pojo.Role;

public interface RoleService {
    public void printRoleInfo(Role role);
}

这个接口采用了Spring推荐的接口方式,这样可以更为灵活,因为这样可以将定义和实现分离,接下来是其实现类,代码如下:

package Juice.main.service.impl;

import Juice.main.pojo.Role;
import Juice.main.service.RoleService2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component("RoleService2")
public class RoleServiceImpl2 implements RoleService2 {
    @Autowired
    private Role role=null;

    public Role getRole() {
        return role;
    }

    public void setRole(Role role) {
        this.role = role;
    }

    @Override
    public void printRoleInfo() {
        System.out.println("id="+role.getId());
        System.out.println("roleName="+role.getRoleName());
        System.out.println("note="+role.getNote());
    }
}

这里的@Autowired注解,表示在Spring IoC定位所有的Bean后,这个字段需要按类型注入,这样IoC容器就会寻找资源,然后将其注入。

@Autowired出来可以配置在属性之外,还允许方法配置,常见的Bean的setting方法也可以使用它来完成注入。
在大部分情况下,我还是建议使用@Autowired注解,这是Spring IoC自动装配完成的,是的配置大幅度减少,满足约定优于配置的原则,增强程序的健壮性。

3、@Primary和@Qualifier

@Autowired注解可以完成一些自动装配的功能,并且方法十分简单,但是有时候这样的方式并不能使用。因为该注解采用的是按类型来注入对象,但是Java中接口可以有多个实现类,这样就会造成通过类型获取Bean的不唯一,从而导致Spring IoC类似于按类型的方式无法获取得到唯一的实例化类。
为了解决这一方法,才推出了@Primary和@Qualifier这两个注解。

注解@Primary
注解@Primary代表首要的,当Spring IoC通过一个接口或者抽象类注入对象时,注解@Primary会告诉Spring IoC容器,请优先使用该类注入。
但是无论如何这个接口只能解决首要性问题,而不能解决选择性的问题,简而言之,他不能选择使用接口具体的实现类去注入。

注解@Qualifier
注解@Qualifier就好比是采用按名称查找的方法。

@Autiwired
@Qualifier("roleService")
private RoleService roleService=null;

4、使用@Bean装配Bean
对于Java而言,大部分的开发都需要引入第三方的包,而且往往并没有这些包的源码,这时候将无法为这些包的类加入@Component注解,让它们变为开发环境的Bean。
这个时候Spring给予了一个注解@Bean,它可以注解到方法之上,并且将方法返回的对象作为Spring的Bean,存放在IoC容器中。

@Bean(name="dataSource")
public DataSource getDataSource(){
	...
}

这样就能装配一个Bean,当Spring IoC容器扫描它的时候,就会为其生成对应的Bean。这里还配置了Bean的name为dataSource,这就意味着Spring生成该Bean的时候就会使用dataSource作为其BeanName。

Spring框架 (9) —— 模拟注册功能(使用注解方式)、纯注解配置 模拟注册功能-使用注解方式模拟注册功能(使用注解方式)DAO层代码Service层代码表现层代码测试代码applicationContext.xml纯注解配置问题示例代码简单入门说明配置步骤第一步:创建一个Java项目第二部:编写dao层、pojo层、service层、controller层代码第三步:编写配置类代码第四步:编写测试代码 模拟注册功能(使用注解方式) DAO层代码 //@Compo... 阅读详情

相关推荐

Spring - 装配Spring Bean-通过注解(组件扫描)

通过注解装配Spring BeanAnnotation方式组件扫描使用@Component装配Bean@ComponentScan的使用自动装配-@AutoWired-下一节 Annotation 通过注解(Annotation)去装配Soring Bean,可以减少对XML文件的配置,注解功能更为强大,他既能实现XML的功能,也能提供自动装配的功能。 方式 方式 作用 组件扫描(...

qq_40994234的博客 1363

使用注解的方式装配Bean

使用注解的方式装配Bean

yu的博客 600

Spring全家桶:面试题

Spring 1、Spring是什么? Spring是一个轻量级的IoC和AOP容器框架。是为Java应用程序提供基础性服务的一套框架,目的是用于简化企业应用程序的开发,它使得开发者只需要关心业务需求。主要包括以下七个模块: Spring Context:提供框架式的Bean访问方式,以及企业级功能(JNDI、定时任务等); Spring Core:核心类库,所有功能都依赖于该类库,提供IOC和DI服务; Sprin...

DL9861的博客 2509

注解装配bean(一)

注解实现Bean的装配学习心得,带有小例子

Monkeydesigner的博客 912

Spring框架中使用注解装配Bean的实践指南

在Spring框架中,Bean是创建对象的简单方式,是Spring容器中受管理的组件。Bean在Spring中是定义应用程序组件的术语,每个Bean都是由Spring IoC容器来管理的。在现代的Java应用开发中,注解已经成为一种被广泛采用的编程范式。Spring框架对注解的使用提供了强大的支持,使得代码更加简洁、易于理解和维护。注解驱动开发的优势主要体现在以下几个方面:代码简洁性:注解可以减少大量的XML配置,使得配置更加集中,更易于管理。

weixin_42601608的博客 1015

LangChain4j + Milvus 从0-1实现会话管理与RAG检索的AIChat超详细教程

本教程将介绍如何使用LangChain4j和Milvus向量数据库构建一个具备流式输出、会话管理、会话隔离和基于文档RAG检索能力的AI机器人。我们将使用阿里百炼模型作为LLM后端,并通过Docker部署Milvus向量数据库。创建Assistant接口,定义聊天服务:LangChain4j 中文文档 | LangChain4j 中文文档wiringMode :这个属性一般两种,一种是自动装配,我们这里选择手动配置。

2301_80014343的博客 1434

Spring—Bean的装配方式—基于注解的七种装配方式

(1)@Component 该注解是一个泛化的概念,仅仅表示一个组件对象(Bean),可以作用在任何层次上。 (2)@Repository 该注解用于将数据访问层(Dao层)的类标识为Bean,即注解数据访问层Bean,其功能与@Componet相同 (3)@Service 该注解用于标注一个业务逻辑组件类(Service层),其功能与@Component相同 (4)@Controller 该注解用于标注一个控制器组件类(SpringMVC的Controller),其功能与@Componet相同 (5)@A

weixin_51423778的博客 1562

三维变换矩阵实战——三维点云的旋转、缩放、镜像、错切、平移、正交投影

旋转矩阵:右边矩阵是点云的原始坐标,左边的是旋转矩阵可视化:绕x轴旋转90度。

weixin_43850909的博客 8227

Spring 如何使用注解装配Bean呢?

Spring 使用注解装配Bean的示例分享

qq_25073223的博客 886

微信PC端Multi文件夹数据库解析:语音消息导出与转换实战指南

本文提供了一份详细的微信PC端语音消息导出与转换实战指南。通过解析Multi文件夹中的MediaMSG数据库,指导用户定位、解密数据库,并利用Python脚本精准提取SILK格式语音,最终转换为通用的WAV或MP3格式,实现个人语音数据的本地备份与处理。

garlic的博客 582

S7-200SMART系列全套接线说明

SMART200接线方法,输入,输出,模拟量,面板,扩展糟等,并且详细说明接线原理。

文都龙哥 1万+

Spring Bean的装配方式 第2关:基于注解的 Bean 装配

基于注解的 Bean 装配

于建章的博客 1665

绝缘检测是什么? 绝缘检测原理 绝缘检测检测的是什么?那个量?电压?电流?电阻?

绝缘电阻是电气设备和电气线路最基本的绝缘指标。对于低压电气装置的交接试验,常温下电动机、配电设备和配电线路的绝缘电阻不应低于0.5MΩ(对于运行中的设备和线路,绝缘电阻不应低于1MΩ/kV)。 绝缘电阻的正确测量方法 现代生活日新月异,人们一刻也离不开电。在用电过程中就存在着用电安全问题,在电器设备中,例如电机、电缆、家用电器等。 影响因素 环境温湿度 一般材料的绝缘电阻值随环境温湿度的升高而减小。相对而言,表面电阻(率)对环境湿度比较敏感,而体电阻(率)则对温度较为敏感。 湿度增加,表面泄漏增大,导体电导

dianqicyuyan的博客 2万+

Spring IOC 注解装配 Bean

<!-- 使用 context 命名空间 ,在配置文件中开启相应的注解处理器 --> <!-- <context:annotation-config />--> <!--分别定义3个Bean实例 --> <!--<bean id="userDao" class="apwei.annotation.UserDa...

爪白白的个人博客 690

Autosar Dcm配置-App到Boot的跳转及1002回复配置及实现-基于ETAS软件

在软件刷写流程中,上位机(诊断仪)发送1002后,APP检查允许跳转boot后,在特定的ram(软复位不清除)写入指定置后通过触发软件复位来跳转到boot的。在APP跳转到Bootloader时,1002的回复有两种方式,一种是APP直接回复,然后跳转,另一种是APP回复NRC78,然后跳转,在Boot中回复。本文介绍这两种方式的实现。如果是在APP中回复,可以少发一个0x78,整体跳转时间可能会少一些。但是如果诊断在收到5002之后立马请求其他的服务,可能出现boot正在初始化而未正常接收到报文。

赞的博客 1556

2ED2410-EM的使用

2ED2410-EM的使用

让你爱上电路设计 972

006,Spring注解方式装配Bean

Spring注解方式装配Bean 1,概述 通过之前的学习,我们己经知道如何使用XML的方式去装配Bean但是更多的时候我们已经不再推荐使用XML的方式去装配Bean(注意,XML装配Bean的知识你还是要会),更多时候会考虑使用注解的方式去装配Bean。使用注解的方式可以减少XML的配置,并且注解功能更为强大,它既能实现XML的功能,也提供了自动装配的功能,采用了自动装配后,程序员所需要做的决断就少了,更加有利于对程序的开发,这就是“约定由于配置” 的开发原则。 在Spring中,提供了两种方式来发

V哥教育,java技术博客 557

Unity零基础到入门☀️| 万字教程 讲解Unity中的数据存储 PlayerPrefs、XML、JSON【建议收藏】

本文章是Unity零基础到入门专栏的系列文章。 适合对Unity3D引擎感兴趣的小伙伴学习,偏向于新手学习! 本篇文章就来介绍一下Unity中三种基本的数据存储方式:PlayerPrefs、XML、JSON

努力前行,总会成为自己心中的那道光 8万+

Spring基础——基于Annotation(注解)装配Bean

在 Spring 中,我们可以使用 XML 配置文件可以实现 Bean 的装配工作。如下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSch...

qq_45036591的博客 361

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

spring中Bean装配有关的注解

spring中可以使用xml配置文件实现Bean的装配工作,也可以使用注解来进行Bean的装配,用注解的方式可以简化配置嘛。 (1)@Component @Component是一个泛化的概念,仅仅表示一个组件,可以作用在任何层次。 (2)@Repository @Repository用于将持久层(DAO层)的类标识为spring的Bean (3)@Service @Service通常用...

weixin_30332241的博客 202

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

【Spring】Spring中的Bean - 5、Bean的装配方式(XML、注解(Annotation)、自动装配)

Bean的装配方式 简单记录-Java EE企业级应用开发教程(Spring+Spring MVC+MyBatis)-Spring中的Bean 文章目录Bean的装配方式基于XML的装配基于注解(Annotation)的装配自动装配 IoC是Spring框架的核心内容,使用多种方式完美的实现了IoC,可以使用XML配置,也可以使用注解,新版本的Spring也可以零配置实现IoC。 控制反转(IoC...

渐若窥宏大的博客 1857

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Spring学习(六)bean装配详解之 【通过注解装配 Bean】【基础配置方式】

本文借鉴:Spring学习(特此感谢!) 通过注解装配 Bean 1、前言 优势 1.可以减少 XML 的配置,当配置项多的时候,XML配置过多会导致项目臃肿难以维护 2.功能更加强大,既能实现 XML 的功能,也提供了自动装配的功能,采用了自动装配后,程序猿所需要做的决断就少了,更加有利于对程序的开发,这就是“约定优于配置”的开发原则 IOC发现Bean的两种方式 组件...

weixin_30270561的博客 351

Spring框架(基于注解装配Bean)

5 通过注解装配Bean 5.1 注解装配介绍 上面说完了xml装配的各种方式,终于到了注解方式了,这也是重头戏,更多时候已经不再推荐使用xml方式去装配Bean,更多时候会考虑使用注解(annotation)的方式去装配Bean. 使用注解的方式可以极大减少xml的配置,采用了自动装配后,开发人员所需要做的工作就少了很多,有利于程序的开发,这就是"约定优于配置"的开发原则. 在Spring中,提供了两种方式来让SpringIOC容器发现Bean.   1) 组件扫描:通过定义资源的方式,让SpringI

qq_41649001的博客 1177

Spring5基础(6)——Spring Bean(装配方式——使用注解装配)

此博客为学习笔记,记录下来怕自己后面学着学着忘记了。 简书内容同步更新,id同名,本文简书链接 在上两篇文章中记录了Spring Bean中的配置属性+实例化+作用域+生命周期,此文将Spring Bean的补充Bean装配方式。 这是上两篇链接: Spring5基础(5)——Spring Bean(装配方式——xml配置文件装配) ...

小蜉蝣星蔚的博客 360

Spring基于注解装配bean——易懂

1.为什么使用注解装配bean 首先了解一个问题,什么是装配? 装配:填装配置,给非简单数据类型(基本数据类型和String类型视为简单数据类型)属性设置指定值称为装配,所以我们知道了装配这个词是特指给非简单数据类型配置属性值的,简单数据类型没有装配这个概念说法。 在 Spring 中,尽管可以使用 XML 配置文件实现 Bean 的装配工作,但如果应用中 Bean 的数量较多,会导致 XML 配置文件过于臃肿,从而给维护和升级带来一定的困难。 Jav...

qq_45698467的博客 503

Spring:自动装配 Bean 的两种方式、使用注解开发

详细介绍了自动装配 Bean 的两种方式,以及使用注解开发来代替 xml 配置文件

taiyang3285的博客 2326
上一篇: Spring装配Bean——通过XML配置装配Bean
下一篇: Spring的常用注解
monkey_wei
博客等级 码龄8年 62粉丝 139原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值