spring属性注入和对象注入,spring bean对象的属性注入方式

  spring属性注入和对象注入,spring bean对象的属性注入方式

  

目录

一、@自动连线注解@限定符@主二、@资源注解三、@注射和@已命名注解总结当一个类运行需要调用一个成员对象,成员对象也是被容器类托管的类对象时,则可以用依赖注入创建成员对象。让容器类来帮你创建成员对象。

 

  官网链接:基于批注的容器配置

  前置:

  容器类应用配置

  导入org。spring框架。语境。注释。组件可以;导入org。spring框架。语境。注释。配置;@ Configuration @ ComponentScanpublic类AppConfig {}创建一个接口喂

  公共接口Hello { void Hello world();}创建一个类HelloImpl1实现接口你好。并且被容器托管

  导入org。spring框架。刻板印象。组件;@Componentpublic类HelloImpl1实现Hello { @ Override public void Hello world(){ system。出去。println( Hello world 1 );}}

  

一、@Autowired注解

在声明成员变量上加上@Autowires注解。让容器来帮忙创建对象。该成员变量也必须被容器类托管。

 

  创建我的你好类,里面有喂成员对象。如下所示:

  导入org。spring框架。豆子。工厂。注释。自动连线;导入org。spring框架。刻板印象。组件;@组件公共类my Hello { @ Autowired Hello h;void say(){ h . hello world();}}如果不加@自动连线运行说()会报错。

  进行测试:

  导入org。spring框架。语境。应用程序上下文;导入组织。spring框架。语境。注释。annotationconfigapplicationcontext;公共类Test { public static void main(String[]args){ application context AC=new AnnotationConfigApplicationContext(appconfig。类);MyHello mh=ac.getBean(myHello ,我的Hello。类);MH。say();} }运行结果:

  如果成员对象是接口,并且有多个实现类。则需要使用@限定符或者@主要注解。

  在创建一个类实现喂接口。

  导入org。spring框架。刻板印象。组件;@Componentpublic类HelloImol2实现Hello { @ Override public void Hello world(){ system。出去。println( Hello world 2 );}}这时,你好接口有两个实现类。

  再次运行试验类,报错。因为调用类有冲突。

  解决方案有两种。

  

@Qualifier

在@自动连线下加入@限定符(值=id名)。编号名默认是类名且首字母小写。要指定是调用实现接口中的哪个类。

 

  如上述解决:

  导入org。spring框架。豆子。工厂。注释。自动连线;导入org。spring框架。豆子。工厂。注释。限定符;导入org。spring框架。刻板印象。组件;@ component公共类my hello { @ auto wired @ Qualifier(value= hello impl 1 )//添加此注解你好h;void say(){ h . hello world();}}

  

@Primary

在想要用到的多个实现接口对象中的其中一个类,加上@主要注解

 

  如: 我想通过喂运行你好。则在实现类加上@主要注解:

  导入org。spring框架。语境。注释。初级;导入org。spring框架。刻板印象。组件;@ Component @ primary public class Hello impl 1实现Hello { @ Override public void Hello world(){ system。出去。println( Hello world 1 );} }测试类运行成功

  

二、@Resource注解

在成员对象上加入@Resource(name=id名)id名为你想要调用这个接口中实现的哪个类的类名且首字母小写。

 

  则上述的我的你好类可写成:

  导入org。spring框架。刻板印象。组件;导入javax。注释。资源;@ component公共类my Hello { @ Resource(name= Hello impl 1 )Hello h;void say(){ h . hello world();} }运行Test类

  

三、@Inject 和 @Named注解

使用这两个注解需要导入坐标。在pom.xml加入

 

  依赖关系groupIdjavax.inject/groupId artifactIdjavax.inject/artifactId版本1/版本/依赖关系在需要创建的成员对象上一起使用了两个注释。其中@Named(id name) id name是您要在此接口中调用的类的类名,首字母是小写的。

  则上述的MyHello类可以修改为:

  导入org . spring framework . stereotype.component;导入javax . inject . inject;导入javax . inject . named;@ component public class my Hello { @ Inject @ Named( Hello impl 1 )Hello h;void say(){ h . hello world();}}继续运行测试类,仍然可以成功运行。

  上面也可以实现set方法的依赖注入,需要保证传递的参数由容器管理。

  

总结

本文到此为止。希望它能帮到你,也希望你能多关注更多的盛行它的内容!

 

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • spring编程式事务处理,spring编程事务
  • spring编程式事务处理,spring编程事务,详解Spring学习之编程式事务管理
  • spring的核心功能模块有几个,列举一些重要的spring模块
  • spring的核心功能模块有几个,列举一些重要的spring模块,七个Spring核心模块详解
  • spring注解和springmvc的注解,SpringMVC常用注解
  • spring注解和springmvc的注解,SpringMVC常用注解,详解springmvc常用5种注解
  • spring实现ioc的四种方法,spring的ioc的三种实现方式
  • spring实现ioc的四种方法,spring的ioc的三种实现方式,简单实现Spring的IOC原理详解
  • spring事务失效问题分析及解决方案怎么做,spring 事务失效情况
  • spring事务失效问题分析及解决方案怎么做,spring 事务失效情况,Spring事务失效问题分析及解决方案
  • spring5.0新特性,spring4新特性
  • spring5.0新特性,spring4新特性,spring5新特性全面介绍
  • spring ioc以及aop原理,springmvc aop原理
  • spring ioc以及aop原理,springmvc aop原理,深入浅析Spring 的aop实现原理
  • Spring cloud网关,spring cloud zuul作用
  • 留言与评论(共有 条评论)
       
    验证码: