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>
相关推荐
FreeBuf_6 分钟前
“前缀替换“攻击引发恐慌:高度仿真的“Jackson“冒牌库入侵Maven中央仓库
java·python·maven
普通网友11 分钟前
PictureSelector 相册全白不显示问题
java·开发语言
学java的可达鸭13 分钟前
一个只会 MVC 的 java 小白对 DDD 的理解
后端
掘金者阿豪15 分钟前
Kubernetes 中 "Deployment does not have minimum availability" 错误解析与解决方案
后端
独自破碎E16 分钟前
kafka中的时间轮实现
java·开发语言
Java编程爱好者17 分钟前
SpringBoot+SPI机制,轻松实现可插拔组件
后端
程序员阿鹏20 分钟前
如何保证写入Redis的数据不重复
java·开发语言·数据结构·数据库·redis·缓存
无限大620 分钟前
为什么"容器化"技术很重要?——从虚拟机到 Docker
后端·github
qq_124987075324 分钟前
基于springboot的智能任务管理助手小程序设计与实现(源码+论文+部署+安装)
spring boot·后端·信息可视化·微信小程序·小程序·毕业设计·计算机毕业设计
狂炫冰美式24 分钟前
Meta 收购 Manus:当巨头搭台时,你要做那个递钥匙的人
前端·人工智能·后端