Spring @Autowired,@Resource,@Required注解的用法和作用

缺陷检测:使用PatchCore训练自己的数据集 必须包含有训练图片(无缺陷图片)、测试图片(缺陷图片)和ground_truth,并且ground_truth必须与对应图片的名称相同。同上一篇结果一样,我的输出为原始图片大小,但是不知道是不是因为图片不是正方形的,导致训练结果不好。编写一个脚本,重新规划数据集的路径规则,但是我稍微写复杂了一点,使用了类来操作。第二种(复杂):编写一个自己的Dataset,参考。第一种(简单):将数据集路径规则改成项目中。返回的必须是一个字典类型,可以阅读。本人此次使用的是第一种方法。运行时,参数部分直接输入。 阅读详情


Spring @Autowired,@Resource,@Required注解的用法和作用

@Autowired的用法和作用

这个注解就是spring可以自动帮你把bean里面引用的对象的setter/getter方法省略,它会自动帮你set/get。
<bean id="userDao"class="..."/>
<bean id="userService"class="...">
   <property name="userDao">
     <ref bean="userDao"/>
   </property>
</bean>
这样你在userService里面要做一个userDao的setter/getter方法。
但如果你用了@Autowired的话,你只需要在UserService的实现类中声明即可。
@Autowired
private IUserDao userdao;
Spring@Autowired注解与自动装配
1   配置文件的方法
我们编写spring 框架的代码时候。一直遵循是这样一个规则:所有在spring中注入的bean 都建议定义成私有的域变量。并且要配套写上 get 和 set方法。
Boss 拥有 Office 和 Car 类型的两个属性:  
3. Boss.java
public class Boss {    
   private Car car;    
   private Office office;    
   
   // 省略 get/setter     
   
   @Override   
   public String toString() {    
       return "car:" + car + "/n" + "office:" +office;    
   }    
}    
我们在 Spring 容器中将 Office 和 Car 声明为 Bean,并注入到 Boss Bean 中:下面是使用传统 XML 完成这个工作的配置文件 beans.xml:  
beans.xml 将以上三个类配置成 Bean                    
<?xml version="1.0"encoding="UTF-8" ?>    
   <bean id="boss" class="Boss">    
       <property name="car" ref="car"/>    
       <property name="office" ref="office" />    
   </bean>    
   <bean id="office" class="Office">    
       <property name="officeNo" value="002"/>    
   </bean>    
   <bean id="car" class="Car"scope="singleton">    
        <property name="brand"value=" 红旗 CA72"/>    
       <property name="price" value="2000"/>    
   </bean>    
</beans>    
当我们运行以下代码时,控制台将正确打出 boss 的信息:  
清单 5. 测试类:AnnoIoCTest.java  
       
import org.springframework.context.ApplicationContext;    
importorg.springframework.context.support.ClassPathXmlApplicationContext;    
public class AnnoIoCTest {    
   
   public static void main(String[] args) {    
       String[] locations = {"beans.xml"};    
       ApplicationContext ctx =     
           new ClassPathXmlApplicationContext(locations);    
       Boss boss = (Boss) ctx.getBean("boss");    
       System.out.println(boss);    
   }    
}    
     
这说明 Spring 容器已经正确完成了 Bean 创建和装配的工作。  
2. @Autowired
Spring 2.5 引入了 @Autowired 注释,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。通过 @Autowired的使用来消除 set ,get方法。
要实现我们要精简程序的目的。需要这样来处理:
在applicationContext.xml中加入:
<!-- 该 BeanPostProcessor 将自动对标注@Autowired 的 Bean 进行注入 -->    
<beanclass="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>
Spring 通过一个BeanPostProcessor 对 @Autowired 进行解析,所以要让 @Autowired 起作用必须事先在 Spring 容器中声明 AutowiredAnnotationBeanPostProcessor Bean。  
修改在原来注入spirng容器中的bean的方法。
在域变量上加上标签@Autowired,并且去掉相应的get 和set方法
使用 @Autowired 注释的 Boss.java  
                  
importorg.springframework.beans.factory.annotation.Autowired;    
   
public class Boss {    
   @Autowired   
   private Car car;    
   
   @Autowired   
   private Office office;
}     

在applicatonContext.xml中把原来 引用的<porpery>标签也去掉。
<?xml version="1.0"encoding="UTF-8" ?>    
   
   <!-- 该 BeanPostProcessor 将自动起作用,对标注 @Autowired 的 Bean 进行自动注入 -->    
   <bean class="org.springframework.beans.factory.annotation.    
       AutowiredAnnotationBeanPostProcessor"/>    
   
   <!-- 移除 boss Bean 的属性注入配置的信息 -->     
   <bean id="boss" class="Boss"/>    
     
   <bean id="office" class="Office">    
       <property name="officeNo" value="001"/>    
   </bean>    
   <bean id="car" class=" Car"scope="singleton">    
       <property name="brand" value=" 红旗CA72"/>    
       <property name="price" value="2000"/>    
   </bean>    
</beans>   
这样,当 Spring 容器启动时,AutowiredAnnotationBeanPostProcessor将扫描 Spring 容器中所有 Bean,当发现 Bean 中拥有 @Autowired 注释时就找到和其匹配(默认按类型匹配)的 Bean,并注入到对应的地方中去。  
按照上面的配置,Spring 将直接采用 Java 反射机制对 Boss 中的 car 和 office 这两个私有成员变量进行自动注入。所以对成员变量使用 @Autowired 后,您大可将它们的 setter 方法(setCar() 和 setOffice())从 Boss 中删除。  
当然,您也可以通过 @Autowired 对方法或构造函数进行标注,如果构造函数有两个入参,分别是 bean1 和 bean2,@Autowired 将分别寻找和它们类型匹配的 Bean,将它们作为 CountryService (Bean1 bean1 ,Bean2 bean2) 的入参来创建CountryService Bean。来看下面的对方法
public class Boss {    
   private Car car;    
   private Office office;    
   
    @Autowired    
   public void setCar(Car car) {    
       this.car = car;    
   }    
     
   @Autowired   
   public void setOffice(Office office) {    
       this.office = office;    
   }    
   …    
}    
这时,@Autowired 将查找被标注的方法的入参类型的 Bean,并调用方法自动注入这些 Bean。而下面的使用方法则对构造函数进行标注:     
   
public class Boss {    
   private Car car;    
   private Office office;    
     
   @Autowired   
   public Boss(Car car ,Office office){    
       this.car = car;    
       this.office = office ;    
   }   
}    
由于 Boss() 构造函数有两个入参,分别是 car 和 office,@Autowired 将分别寻找和它们类型匹配的 Bean,将它们作为 Boss(Car car ,Office office) 的入参来创建 Boss Bean。  

@Resource的作用和用法

@Resource 的作用相当于 @Autowired,只不过 @Autowired 按 byType 自动注入,面 @Resource 默认按 byName自动注入罢了。
@Resource 有两个属性是比较重要的,分别是 name和 type,Spring将 @Resource 注释的 name属性解析为 Bean的名字,
而 type属性则解析为 Bean的类型。所以如果使用 name属性,则使用 byName的自动注入策略,而使用 type属性时则使用 byType
自动注入策略。如果既不指定 name也不指定 type属性,这时将通过反射机制使用 byName自动注入策略。
Resource 注释类位于 Spring发布包的 lib/j2ee/common-annotations.jar类包中,因此在使用之前必须将其加入到项目的类库中。
来看一个使用 @Resource 的例子:

使用 @Resource注释的 Boss.java
importjavax.annotation.Resource;
public class Boss{   
// 自动注入类型为 Car 的 Bean   
@Resource   
private Car car;    // 自动注入 bean 名称为 office 的 Bean   
@Resource(name = "office")   
private Office office;
}
一般情况下,我们无需使用类似于 @Resource(type=Car.class) 的注释方式,因为 Bean 的类型信息可以通过 Java反射从代码中获取。
要让 JSR-250 的注释生效,除了在 Bean 类中标注这些注释外,还需要在 Spring容器中注册一个负责处理这些注释的BeanPostProcessor:
CommonAnnotationBeanPostProcessor 实现了 BeanPostProcessor 接口,它负责扫描使用了 JSR-250 注释的 Bean,并对它们进行相应的操作。

@Required注解用于检查特定的属性是否设置

1.RequiredAnnotationBeanPostProcessor 为该注解的处理器,即bean后置处理器,检查所有带有该解的bean属性是否设置,如果未设置则抛出异常。
2.在spring配置文件中可以通过<context:annotation-config/>元素自动注册RequiredAnnotationBeanPostProcessor处理器。
3.RequiredAnnotationBeanPostProcessor处理器还能自定义注解用于检查属性,功能与@Required一致
   如:
   1.定义一个注解类型
    @Retention(RetentionPolicy.RUNTIME)
    @Target(ElementType.METHOD)
    public @interface CustomRequired {
    }
   2.配置RequiredAnnotationBeanPostProcessor,注入自定义注解类型
     <bean class="org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor">
        <property name="requiredAnnotationType">
          <value>CustomRequired</value>      
        </property>
     </bean>
然后就可以使用@CustomRequired 检查属性是否设置,功能与@Required一致。




从 Service Entry Sheet 按 PO 行项目追溯服务行:PACKNO 与 ESLL 层级解包实战 摘要: SAP MM模块中,外部服务采购的数据结构较为复杂,服务明细并非直接存储在采购订单行项目表EKPO中,而是通过PACKNO关联到服务包表ESLL。本文解析了从采购订单行项目EBELN+EBELP获取服务行号SRVPOS的方法,重点分析了服务包的层级结构(根包、子包SUB_PACKNO),并提供了兼容合同项目的ABAP代码实现。通过EKPO-PACKNO定位根包后,需结合ESUC和ESLL表逐层解析子包,最终获取服务明细数据,解决了服务采购场景下的数据关联难题。(149字) 阅读详情

相关推荐

ollama服务暴露公网?三步搞定Nginx反向代理配置(避坑指南)

本文详细介绍了如何通过Nginx反向代理安全地将Ollama服务暴露到公网,避免直接修改OLLAMA_HOST带来的安全隐患。文章提供了从SSL证书部署到高级安全加固的全流程实战指南,包括IP白名单、基础认证、速率限制等企业级安全措施,帮助用户实现安全可靠的外部访问。

wood5的博客 177

Spring @Resource 忽略 required

在使用spring 自动注入对象通常会用到@Autowired (spring 自定义注解)、@Resource (JSR-250规范定义的注解) 两个注解,在使用中@Autowired 支持 required = false 的设置可以允许注入对象为null,而@Resource 不支持该...

chuangyatu7269的博客 2222

宝骏kiwi 630 730 560 E100 E200 E300 310 510 610 330 530维修手册电路图资料线路图接线图更新

2020-2022年宝骏RS-3维修手册和电路图。2020-2022年宝骏RS-3维修手册和电路图。2019-2021年宝骏RC-6维修手册和电路图。2019-2021年宝骏RC-6维修手册和电路图。2019-2020年宝骏RS-5维修手册和电路图。2019-2020年宝骏RS-5维修手册和电路图。2019-2020年宝骏RM-5维修手册和电路图。2019-2020年宝骏RM-5维修手册和电路图。2019-2021年宝骏510维修手册和电路图。2019-2021年宝骏510维修手册和电路图。

weixin_45821055的博客 1771

Spring @Resource、@Autowired的区别及其两者与@Qualifier结合使用的规则

@Resource @Resource是JSR-250的一个注解,用与资源(通常是JNDI)的注入。Spring对其进行了支持。 装配规则: 如果指定了name属性,则按照name查找,找到且类型匹配则装配,否则配抛出异常 如果指定了name和type属性,则按照name和type精确查找,找到则装配,找不到抛出异常 如果仅指定了type属性,则按照type查找,如果只找到一个则装配,...

写代码哟 3389

从一根USB线缆说起:深入浅出聊聊那些影响信号完整性和EMC性能的‘小细节’(双绞、屏蔽、360度搭接全解析)

本文深入探讨了USB线缆中影响信号完整性和EMC性能的关键细节,包括双绞线绞距、屏蔽层设计和360度搭接工艺。通过实验数据和实用技巧,揭示了这些‘小细节’如何显著影响高频信号质量和电磁兼容性,为工程师提供了从选购到系统设计的全面指南。

weixin_30824479的博客 438

别再被网站风控了!手把手教你修改Chromium源码,实现TLS指纹随机化

本文详细介绍了如何通过修改Chromium源码实现TLS指纹随机化,有效规避网站风控。文章深入解析了TLS指纹(如JA3指纹)的工作原理,并提供了具体的源码修改步骤和编译方法,帮助开发者突破高级反爬技术。通过动态打乱加密套件顺序,实现每次请求生成不同的指纹,显著提升自动化工具的隐蔽性。

weixin_28712661的博客 426

Spring依赖注入—@Resource注解使用

1.@Autowired默认按类型装配(这个注解是属于spring的),默认情况下必须要求依赖对象必须存在,如果要允许null 值,可以设置它的required属性为false,如:@Autowired(required=false) ,如果我们想使用名称装配可以结合@Qualifier注解进行使用,如下: @Autowired() @Qualifier("baseDao") p...

云源 1816

Windows11 - Ubuntu 双系统及 ROS、ROS2 安装

在本教程中,我们将使用 Ubuntu 20.04 版本,该版本使用了新的 Ubuntu 桌面安装程序,该程序将包含在今后发布的所有 Ubuntu 版本中。如果你选择了这个选项,你会看到一个简单的界面,允许你选择要安装Ubuntu的硬盘,并通过滑块来决定你希望Ubuntu使用的磁盘空间大小。如果你的电脑有多个硬盘驱动器,那么只要它们各自有自己的驱动器,这个选项就能让你在安装 Ubuntu 的同时安装现有的操作系统。在此屏幕上,系统会提示您输入您的姓名和您的计算机名称,以显示在网络上。

机器人控制与仿真应用 4507

Spring @Autowired,@Resource,@Required注解的用法和作用(转)

Spring @Autowired,@Resource,@Required注解的用法和作用 @Autowired的用法和作用     这个注解就是spring可以自动帮你把bean里面引用的对象的setter/getter方法省略,它会自动帮你set/get.                             这样你在userService里面要做一个userDa

548

【实战圣经】YOLOv8-pose姿态估计模型从训练到RK3588部署:让边缘端骨骼识别速度突破60FPS

本教程从“模型训练-转换-边缘部署”全链路拆解了YOLOv8-pose姿态估计方案在RK3588上的落地过程,每一步都经过实战验证。无论是智能健身的动作实时纠正,还是工业设备的关键部件姿态检测,这套流程都能让你以最低成本实现高精度、高实时性的姿态估计应用。如果你在实践中遇到模型转换报错、部署性能不达标等问题,可聚焦某一环节深入优化——毕竟,让AI在边缘端“精准捕捉每一个关键点”,才是技术驱动场景创新的核心。

m0_71589036的博客 251

Python 爬虫实战:豆瓣 / IMDB 电影数据抓取(评分 + 剧情 + 演员阵容结构化处理)

在数据为王的时代,电影数据是进行市场分析、推荐系统构建和学术研究的重要资源。豆瓣和 IMDB 作为国内外最具影响力的电影评分和资讯网站,包含了海量高质量的电影数据。本文将带领你从零开始,构建一个健壮的 Python 爬虫,用于抓取豆瓣和 IMDB 的电影信息,并将其中的非结构化数据(如剧情简介、演员列表)进行清洗和结构化处理,最终存储到便于分析的结构化文件(如 CSV)中。

yansideyucsdn的博客 954

Spring注解驱动开发(四)

自动装配。配置类 package com.example.paymentdemo.config; import com.example.paymentdemo.Dao.BookDao; import org.springframework.context.annotation.*; /** * @author xushuai * @date 2022年03月19日 20:50 */ /** * * @author xushuai * @date 2022/3/19 20:52 * @p

weixin_46444914的博客 382

量化交易 米筐 案例:市值因子选股策略

案例:市值因子的选股策略 1.结果 获得超额收益 年化 49% 2. 从股票中选择市值小的股票 选定财务数据筛选 进行每日调仓(多因子选股调仓 周期频率会小一些) 3. 代码 估值有关指标 # 在沪深300股票中,选出市值比较小的10只股票 # 在这个方法中编写任何的初始化逻辑。context对象将会在你的算法策略的任何方法之间做传递。 def init(context): # 沪深300组合 stocks = index_components('000300.XSHG') # 沪深3

廷益_飞鸟的博客 2311

Spring @Autowired、@Resource、@Required、@Component、@Repository、@Service、@Controller注解的用法和作用...

Spring @Autowired,@Resource,@Required注解的用法和作用 Spring中 @Autowired标签与 @Resource标签 的区别 Spring注解@Component、@Repository、@Service、@Controller区别

weixin_33875839的博客 151

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Spring之基于注解的容器配置

Spring之基于注解的容器配置 @Required @required注解用于bean的property注解,eg public class SimpleMovieLister { private MovieFinder movieFinder; @Required public void setMovieF...

nongfuyumin的专栏 250

SAP B1中文培訓教材_SDK

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

Spring注解之@autowired和@resource的区别

[b]Spring注解之@autowired和@resource的区别[/b] [b]@resource[/b] 1.@Resource 注解被用来激活一个命名资源(named resource)的依赖注入, 3.@Resource默认按 byName自动注入(名字相匹配) [code="java"]@Resource(name="dataSource") public vo...

jie310600的博客 229

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

spring中常见的一些注解

1.Spring bean @Required注解作用详解 详情参考:https://blog.youkuaiyun.com/u012557814/article/details/78784762/ 2.@Qualifier:该注解和@Autowired注解搭配使用,用于消除特定bean自动装配的歧义 3.@Autowired与@Resource的区别 ①@Autowired与@Resource都可以用来装配...

JavaAlliance 3049

Rhythmk 一步一步学 JAVA (14) Spring-3 @Autowired,@Qualifier @Required @Resource @Component,@Service,@C......

1、@Autowired 注解:首先在使用时候需要引入配置: <!-- 该 BeanPostProcessor 将自动起作用,对标注 @Autowired 的 Bean 进行自动注入 --> <bean class="org.springframework.bea...

churenbin0810的博客 107

spring相关注入注解介绍

@Required @Required 注释应用于 bean 属性的 setter 方法,它表明受影响的 bean 属性在配置时必须放在 XML 配置文件中,否则容器就会抛出一个 BeanInitializationException 异常。 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://ww

相信明天的博客 156

Spring-Bean的定义装配以及作用域的注解实现

[IOC] Classpath扫描与组件管理 类的自动检测与注册Bean \< context:annotation-config/> @Component,@Repository,@Service,@Controller @Required @Autowired @Qualifier @Resource 1. Classpath扫描与组件管理从Spring3.0开始,Spring JavaConf

白衣 829

spring注解

标识一个该类是 Spring MVC controller 处理器,用来创建处理 http 请求的对象。 图片 图片 @RestController Spring4 之后加入的注解,原来在 @Controller 中返回 json 需要 @ResponseBody 来配合,如果直接用 @RestController 替代 @Controller 就不需要再配置 @ResponseBody ,默认返回 json 格式。 图片 图片 @Service 用于标注业务层组件,说白了就是加入你有一个用注解的方式把这个

gysibm的博客 219

[Spring]IoC容器之进击的注解

目录 概述 启动注解 Spring注解   @Required   @Autowired   @Qualifier JSR 250注解   @Resource   @PostConstruct和@PreDestroy JSR 330注解   @Inject 先啰嗦两句:第一次在博客园使用markdown编辑,感觉渲染样式差强人意,还是github的样式比较顺...

weixin_34247155的博客 85

【spring】注解开发

前言: JavaConfig(基于java类进行配置)实现配置和上篇博客说到的xml配置bean是一样的,只不过spring4之后更加推荐javaConfig的方式。 1、注解 (1)@Configuration 该类等价 与XML中配置beans,相当于Ioc容器,它的某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean,与xml中配置的bean意思一样。 (2)@Import @import 注解允许从另一个配置类中加载 @Bean 定义。考虑 ConfigA 类,如下所示: @C

李光 未来科技 206
上一篇: Java泛型中的标记符含义:
下一篇: 物理分页与逻辑分页
MoveFlower
博客等级 码龄10年 23粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值