品牌型号:联想ThinkPad X1
系统:Windows 10 家庭版
软件版本:Spring 5.3.7
我们在使用Spring框架的时候,对象注入是Spring中核心的应用场景,Map键值对形式的数据常在封装配置项、多策略映射等业务场景中用的比较多,但是很多新手开发者不知道Spring怎么注入Map类型的配置。我们平时开发的时候要把对象注入到容器中,很多开发者只知道怎么注入单个的对象,但是不知道怎么注入第三方组件对象,接下来我们就用案例来给大家讲解下Spring里面怎么注入一个对象,Spring注入map类型的配置的相关内容。
一、Spring里面怎么注入一个对象
我们之前在做传统Web开发的时候,经常需要通过硬编码的形式new一个对象来调用依赖对象。但是这种方式并不好,经常会导致Service层和Dao层代码紧密耦合在一起,不利于后期维护。在接触了SpringIOC之后,可以将创建对象的权力交给Spring。

不管是注入什么对象,我们只需要知道这个对象的实例化方式,是通过构造方法还是通过工厂方式实例化Bean的,然后了解下我们要注入的对象是否有一些必须要注入的参数。举个例子,我们要配置日期对象交给Spring管理,回顾下之前创建对象的方式。

我们可以查看下SimpleDateFormat这个类,追溯父类发现获取Date是通过实例工厂方式进行实例化的。

我们可以在配置文件中先注册SimpleDateFormat的Bean,然后通过实例工厂获取到日期对象。

二、Spring注入map类型的配置
在项目开发的时候,经常会操作到集合,例如常见的有List、Map、Set,甚至Properties,那么我们怎么注入一个Map集合呢?我们可以假设这时我们的Dao中需要注入一个Map集合,集合的键值对都是String类型的。我们可以在Dao中创建一个Map属性,并给这个属性创建set方法。

在配置文件中,例如applicationContext.xml中找到Dao的bean,在bean标签中嵌套一个property标签,通过property标签来进行依赖注入。此时有人要问,我们怎么给这个map一些初始值,我们可以再去property标签内嵌套一个map标签,map标签内通过entry标签完成初始化。

假设我们键值对不再是String类型了,例如键是Integer类型,值是User类型,该怎么配置呢?别急,我们可以先修改dao中的Map泛型key为Integer,value为User。

我们再去配置文件中修改,key的话为Integer类型的数字,value的话,我们直接去掉,在entry标签内直接配置User的Bean。配置User的Bean的时候,注意下User的构造函数,可以通过constructor-arg注入一些User属性,让Spring在实例化User的时候就对User中的属性完成初始化操作。

以上就是Spring里面怎么注入一个对象,Spring注入map类型的配置的全部内容了。Spring注入一个对象很简单,只需要在配置文件中创建这个bean就可以了,但是如果需要配置一个第三方组件bean,我们需要看下这个第三方bean的实例化方式,然后进行针对性配置。我们在Spring中如果要注入一个map类型,可以在配置文件中通过map标签及entry标签完成配置。