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>
相关推荐
uzong3 分钟前
企业智能助手的实践分享(LLM/RAG)
后端·程序员·架构
San813_LDD2 小时前
[C语言]《Dev-C++ 报错解决手册(Day0607 精华版)》
java·前端·javascript
Anastasiozzzz3 小时前
从有限状态机到智能体图:传统 FSM 与 Agent Graph的演进
java·人工智能·python·ai
GetcharZp8 小时前
GitHub 49K+ Star!C++ 开发者必知的 JSON 神级库:从零到精通全指北
后端
xujinwei_gingko8 小时前
SpringBoot整合WebSocket
spring boot·后端·websocket
智码看视界9 小时前
现代Web开发基础:全栈工程师的起航点
前端·后端·c5全栈
程序员cxuan9 小时前
Claude Fable 5 来了
人工智能·后端·程序员
JS菌9 小时前
手写一个 AI Agent 全栈项目:从沙箱执行到子智能体的完整实现
前端·人工智能·后端
wang09079 小时前
自己动手写一个spring之IOC_2
java·后端·spring