iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Spring成员对象注入的三种方式是什么
  • 717
分享到

Spring成员对象注入的三种方式是什么

2023-06-29 07:06:04 717人浏览 八月长安
摘要

本篇内容主要讲解“spring成员对象注入的三种方式是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Spring成员对象注入的三种方式是什么”吧!当一个类运行需要调用一个成员对象,成员对象也

本篇内容主要讲解“spring成员对象注入的三种方式是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Spring成员对象注入的三种方式是什么”吧!

    当一个类运行需要调用一个成员对象,成员对象也是被容器类托管的类对象时,则可以用依赖注入创建成员对象。让容器类来帮你创建成员对象。

    前置:

    容器类AppConfig

    import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;@Configuration@ComponentScanpublic class AppConfig {}

    创建一个接口Hello

    public interface Hello {        void HelloWorld();    }

    创建一个类HelloImpl1实现接口Hello。并且被容器托管

    import org.springframework.stereotype.Component;@Componentpublic class HelloImpl1 implements Hello{    @Override    public void HelloWorld() {        System.out.println("HelloWorld1");    }}

    一、@Autowired注解

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

    创建MyHello类,里面有Hello成员对象。如下所示:

    import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;@Componentpublic class MyHello {    @Autowired    Hello h;    void say(){        h.HelloWorld();    }}

    如果不加@Autowired运行say()会报错。

    进行测试:

    import org.springframework.context.ApplicationContext;import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class Test {    public static void main(String[] args) {        ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class);        MyHello mh = ac.getBean("myHello",MyHello.class);        mh.say();    }}

    运行结果:

    Spring成员对象注入的三种方式是什么

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

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

    import org.springframework.stereotype.Component;@Componentpublic class HelloImol2 implements Hello{    @Override    public void HelloWorld() {        System.out.println("HelloWorld2");    }}

    这时,Hello接口有两个实现类。

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

    Spring成员对象注入的三种方式是什么

    解决方案有两种。

    @Qualifier

    @Autowired下加入@Qualifier(value="id名") 。id名默认是类名且首字母小写。要指定是调用实现接口中的哪个类。

    如上述解决:

    import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.stereotype.Component;@Componentpublic class MyHello {    @Autowired    @Qualifier(value="helloImpl1") //添加此注解    Hello h;    void say(){        h.HelloWorld();    }}

    Spring成员对象注入的三种方式是什么

    @Primary

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

    如: 我想通过Hello运行HelloImpl1。则在HelloImpl加上@Primary注解:

    import org.springframework.context.annotation.Primary;import org.springframework.stereotype.Component;@Component@Primarypublic class HelloImpl1 implements Hello{    @Override    public void HelloWorld() {        System.out.println("HelloWorld1");    }}

    Test类运行成功

    Spring成员对象注入的三种方式是什么

    二、@Resource注解

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

    则上述的MyHello类可写成:

    import org.springframework.stereotype.Component;import javax.annotation.Resource;@Componentpublic class MyHello {    @Resource(name="helloImpl1")    Hello h;    void say(){        h.HelloWorld();    }}

    运行Test类

    Spring成员对象注入的三种方式是什么

    三、@Inject 和 @Named注解

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

    <dependency>            <groupId>javax.inject</groupId>            <artifactId>javax.inject</artifactId>            <version>1</version></dependency>

    两个注解一起用在需要创建成员对象上。其中@Named("id名")id名为你想要调用这个接口中实现的哪个类的类名且首字母小写。

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

    import org.springframework.stereotype.Component;import javax.inject.Inject;import javax.inject.Named;@Componentpublic class MyHello {    @Inject    @Named("helloImpl1")    Hello h;    void say(){        h.HelloWorld();    }}

    继续运行Test类,仍然可以运行成功

    Spring成员对象注入的三种方式是什么

    上述也可以实现set方法的依赖注入,需要保证传入的参数被容器托管。

    到此,相信大家对“Spring成员对象注入的三种方式是什么”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

    --结束END--

    本文标题: Spring成员对象注入的三种方式是什么

    本文链接: https://www.lsjlt.com/news/323653.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • Spring成员对象注入的三种方式是什么
      本篇内容主要讲解“Spring成员对象注入的三种方式是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Spring成员对象注入的三种方式是什么”吧!当一个类运行需要调用一个成员对象,成员对象也...
      99+
      2023-06-29
    • Spring成员对象注入的三种方式详解
      目录一、@Autowired注解@Qualifier@Primary二、@Resource注解三、@Inject和@Named注解总结当一个类运行需要调用一个成员对象,成员对象也是被...
      99+
      2022-11-13
    • Spring中获取Bean对象的三种注入方式与两种注入方法详解
      目录前言获取Bean对象的三种注入方式属性注⼊构造⽅法注⼊Setter 注⼊属性注⼊、构造⽅法注⼊和Setter 注⼊有什么区别呢?两种注入方法总结前言 获取 bean 对象也叫做对...
      99+
      2023-03-08
      spring什么时候注入bean spring注入的几种方式 注入bean
    • Spring中接口注入的三种方式分别是什么
      本篇文章为大家展示了Spring中接口注入的三种方式分别是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Spring中 接口注入的三种方式,上面的代码中,ClassA依赖于Interf...
      99+
      2023-06-17
    • Spring依赖注入的两种方式是什么
      今天小编给大家分享一下Spring依赖注入的两种方式是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、依赖注入方式思考...
      99+
      2023-07-02
    • Spring Boot中单例类实现对象的注入方式是什么
      本篇内容介绍了“Spring Boot中单例类实现对象的注入方式是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Spring Boot ...
      99+
      2023-06-20
    • JavaScript中创建对象的三种方式分别是什么
      JavaScript中创建对象的三种方式分别是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Javascript中的一切几乎都是对象,...
      99+
      2022-10-19
    • css的三种引入方式是什么
      这篇文章主要介绍“css的三种引入方式是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“css的三种引入方式是什么”文章能帮助大家解决问题。css的引入方式有三种...
      99+
      2022-10-19
    • Python种导入模块的三种方式是什么
      本篇内容介绍了“Python种导入模块的三种方式是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  1 . import  >&g...
      99+
      2023-06-02
    • java对类对象成员的初始化方法是什么
      Java对类对象成员的初始化方法是通过构造方法来实现的。构造方法是一个特殊的方法,用于创建对象并对成员变量进行初始化。在Java中,...
      99+
      2023-09-09
      java
    • Spring配置数据源的三种方式是什么
      这篇文章主要介绍“Spring配置数据源的三种方式是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Spring配置数据源的三种方式是什么”文章能帮助大家解决问题。一、数据源的作用数据源(连接池)...
      99+
      2023-06-26
    • python生成单位阵或对角阵的三种方式是什么
      本篇内容介绍了“python生成单位阵或对角阵的三种方式是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!python生成单位阵或对角阵前...
      99+
      2023-06-30
    • JavaScript对象的四种使用方式是什么
      这篇“JavaScript对象的四种使用方式是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“JavaScript对象的四...
      99+
      2023-06-30
    • 进入Win7安全模式的三种方法分别是什么
      这期内容当中小编将会给大家带来有关进入Win7安全模式的三种方法分别是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。方法一、开机按F8键进入1、我们在重启或者电脑开机的时候,在进入Windows系统启...
      99+
      2023-06-05
    • 日本服务器的三种网络接入方式是什么
      日本服务器的三种网络接入方式是:1、日本服务器提供的日本本地网络线路,主要以日本本土用户所用;2、日本服务器提供的国际海外线路,用户使用量比较大;3、日本服务器提供的与国内直连的CN2直连线路,适合用作企业级网站的搭建或高性能带宽需求的业务...
      99+
      2022-10-22
    • 针对PHP对象注入漏洞的新型利用方法是什么
      本篇文章为大家展示了针对PHP对象注入漏洞的新型利用方法是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。前言就在前段时间的BlackHat黑客大会上,来自Secarma的安全研究专家Sam Th...
      99+
      2023-06-04
    • spring中bean注入无效怎么解决和new创建对象的区别是什么
      这篇文章主要介绍“spring中bean注入无效怎么解决和new创建对象的区别是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“spring中bean注入无效怎么解决和new创建对象的区别是什么”...
      99+
      2023-06-29
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作