Spring中Bean注入方式和注入类型

Spring中Bean注入方式和注入类型

一、注入方式

二、注入类型

2.1List类型(使用set方法的属性注入)

1、业务实现类定义set方法:

java 复制代码
package com.itheima.service.impl;

import com.itheima.service.UserService;

import java.util.List;

//@Service("userService")
public class UserServiceImpl2 implements UserService
{
    @Override
    public void show2() {

    }

    @Override
    public void show1() {
//        打印集合
        System.out.println(stringList);
    }
//    注入集合
    private List<String> stringList;
//    使用set方法注入(还还有一种就是通过构造注入)
    public void setStringList(List<String> stringList) {
        this.stringList = stringList;
    }
}

2、xml中bean的配置:

java 复制代码
<bean name="userService" class="com.itheima.service.impl.UserServiceImpl2">
        <property name="stringList">
            <list>
<!--                由于是String类型,所以这里直接写value即可-->
                <value>aaa</value>
                <value>bbb</value>
                <value>ccc</value>
            </list>
        </property>
    </bean>

2.2List加对象引用:List

1、业务实现类定义set方法:

java 复制代码
  private List<UserDao> userDaoList;
    public void setUserDaoList(List<UserDao> userDaoList) {
        this.userDaoList = userDaoList;
    }

2、直接在List中定义:

java 复制代码
<bean name="userService" class="com.itheima.service.impl.UserServiceImpl2">
        <property name="userDaoList">
            <list>
<!--                内部是对象,要么直接配要么ref引入-->
                <bean class="com.itheima.dao.impl.UserDaoImpl"/>
                <bean class="com.itheima.dao.impl.UserDaoImpl"/>
                <bean class="com.itheima.dao.impl.UserDaoImpl"/>
                <bean class="com.itheima.dao.impl.UserDaoImpl"/>
            </list>
        </property>
    </bean>

3、在外面定义,List中直接引用

java 复制代码
<bean name="userService" class="com.itheima.service.impl.UserServiceImpl2">
        <property name="userDaoList">
            <list>
                <ref bean="userDao1"/>
                <ref bean="userDao2"/>
                <ref bean="userDao3"/>
                <ref bean="userDao4"/>
            </list>
        </property>
    </bean>
    <bean name="userDao1" class="com.itheima.dao.impl.UserDaoImpl"/>
    <bean name="userDao2" class="com.itheima.dao.impl.UserDaoImpl"/>
    <bean name="userDao3" class="com.itheima.dao.impl.UserDaoImpl"/>
    <bean name="userDao4" class="com.itheima.dao.impl.UserDaoImpl"/>

2.3Set类型

java 复制代码
<property name="stringSet">
            <set>
                <value>yyy</value>
                <value>zzz</value>
            </set>
        </property>

2.4Set类型

也是同理,使用set方法,这里只给出xml中bean的配置即可:

1、直接在Set中定义

java 复制代码
<property name="userDaoSet">
            <set>
                <bean class="com.itheima.dao.impl.UserDaoImpl"/>
                <bean class="com.itheima.dao.impl.UserDaoImpl"/>
                <bean class="com.itheima.dao.impl.UserDaoImpl"/>
            </set>
        </property>

2、在外面定义,Set中直接引用

java 复制代码
<property name="userDaoSet">
            <set>
                <ref bean="userDao1"/>
                <ref bean="userDao2"/>
                <ref bean="userDao3"/>
            </set>
        </property>

2.5Map<String,UserDao>类型

java 复制代码
        <property name="userDaoMap">
            <map>
                <entry key="m1" value-ref="userDao1"/>
                <entry key="m2" value-ref="userDao2"/>
                <entry key="m3" value-ref="userDao3"/>
            </map>
        </property>

2.6 Properties

java 复制代码
  <property name="properties">
            <props>
                <prop key="kk1">a1</prop>
                <prop key="kk2">a2</prop>
                <prop key="kk3">a3</prop>
            </props>
        </property>
相关推荐
用户6757049885023 分钟前
Celery 太重了?这可能是你一直在找的 asyncio 任务队列
后端·python·消息队列
Cloud_Shy6184 分钟前
Python 数据分析基础入门:《Excel Python:飞速搞定数据分析与处理》学习笔记系列(第十一章 Python 包跟踪器 下篇)
前端·后端·python·数据分析·excel
BIG_PEI12 分钟前
检查并安装Redis
java
大貔貅喝啤酒14 分钟前
基于Windows下载安装Android Studio 3.3.2版本教程(2026详细图文版)
android·java·windows·android studio
奋斗的小方16 分钟前
Java基础篇09:项目实战
java·开发语言
海兰17 分钟前
【第21篇-续】graph-Stream-Node改造为适配openAI模型示例
java·人工智能·spring boot·spring·spring ai
vKd0Ff21L19 分钟前
如何在Dev-C++中设置TDM-GCC为默认编译器第九十一篇
java·jvm·c++
武子康21 分钟前
Java-221 RocketMQ 消息存储核心原理:CommitLog、ConsumerQueue、IndexFile 与消息过滤机制
java·大数据·分布式·消息队列·rabbitmq·rocketmq·java-rocketmq
神奇小汤圆22 分钟前
为什么Redis能称霸缓存界?揭秘其每秒10万+读写的核心技术
后端
楼田莉子27 分钟前
C++17新特性:结构化绑定/inline变量/if相关的变化
c++·后端·学习