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>
相关推荐
苏三说技术42 分钟前
LangChain4j 和 LangGraph4j,哪个更好?
后端
ServBay2 小时前
7 个AI开发中真正用得上的 MCP Server,配合Claude Code食用效果更佳
后端·claude·mcp
妙码生花2 小时前
从 PHP 到 AI + Golang,程序员自救转型手记(十五):优化细节、网络请求封装
前端·后端·ai编程
用户6757049885023 小时前
Go 语言里判断字符串为空,90% 的人都写错了!
后端·go
Flittly3 小时前
【AgentScope Java新手村系列】(16)从RAG到多路检索
java·spring boot·spring
用户6757049885023 小时前
Go 进阶必修:90% 的人都没用对的“表驱动法”
后端·go
小兔崽子去哪了3 小时前
Java 生成二维码解决方案
java·后端
苍何3 小时前
懂事的 Agent 已经开始自己看屏幕干活了,效率起飞!
后端
掘金码甲哥3 小时前
1分钟买不了吃亏系列: nginx动态域名解析
后端
神奇小汤圆4 小时前
2026大厂Java岗面试记录:八股+场景+项目+AI,一文讲透快速上岸路径(含答案)
后端