Spring-di基本使用

SpringDI

1 基础环境准备

       

流程如下

1.在自己的工程中建一个module用于SpringDi注入
2.导入spring相关的依赖
<dependencies>

    <!--导入spring-context依赖-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>6.1.12</version>

    </dependency>
    <!--导入测试依赖-->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>
    <!--导入日志框架-->

    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.23.1</version>
    </dependency>

    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j2-impl</artifactId>
        <version>2.23.1</version>
    </dependency>

</dependencies>
3.创建spring的配置文件
1)log4j2配置文件

在resources中的文件夹中创建log4j2.xml文件。文件中的内容如下

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <!--配置控制台输出日志-->
        <Console name="Console" target="SYSTEM_OUT">
            <!--日志的输出格式-->
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
        <!--配置文件输出日志-->
        <File name="File" fileName="d:logs/app.log">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </File>
    </Appenders>
    <Loggers>
        <!--日志级别为debug-->
        <Root level="debug">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="File"/>
        </Root>
    </Loggers>
</Configuration>
2)SpringConfig.xml

在resourse文件夹下,创建SpringConfig.xml文件,文件中的内容如下

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans 
       http://www.springframework.org/schema/beans/spring-beans.xsd">

</beans>
4.准备实体类
 1)User实体类

        

package org.xiji.enty;

public class User {
    private String username;

    private String password;

    public User(String username, String password) {
        this.username = username;
        this.password = password;
    }

    public User() {
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

2)Teacher实体类

package org.xiji.enty;

import java.util.List;
import java.util.Map;

public class Teacher {
    private String teacherName;

    private User user;

    private List<User> listUser;

    private Map<String, User> mapUser;


    public Teacher(String teacherName, User user, List<User> listUser, Map<String, User> mapUser) {
        this.teacherName = teacherName;
        this.user = user;
        this.listUser = listUser;
        this.mapUser = mapUser;
    }

    public Teacher() {
    }

    public String getTeacherName() {
        return teacherName;
    }

    public void setTeacherName(String teacherName) {
        this.teacherName = teacherName;
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    public List<User> getListUser() {
        return listUser;
    }

    public void setListUser(List<User> listUser) {
        this.listUser = listUser;
    }

    public Map<String, User> getMapUser() {
        return mapUser;
    }

    public void setMapUser(Map<String, User> mapUser) {
        this.mapUser = mapUser;
    }
}

2 SpringDi注入

1.普通属性注入

        set注入        

                通过property的 name="属性名", value="属性值"

<!--set注入-->
<bean id="user" class="org.xiji.enty.User">
    <property name="username" value="xiji"/>
    <property name="password" value="123456"/>
</bean>

        构造注入

                通过contructor-arg name="属性名" ,value="属性值"

<!--构造注入-->
<bean id="user2" class="org.xiji.enty.User">
    <constructor-arg name="username" value="张三"/>
    <constructor-arg name="password" value="123456"/>
</bean>

2.对象属性注入

        外部引入

                通过property name="属性名" ref="外部对象bean属性id"

        

<!--外部对象注入-->
<bean id="teacher" class="org.xiji.enty.Teacher">
    <property name="teacherName" value="张老师"/>
    <property name="user" ref="user"/>
</bean>

        内部创建

                在property 标签内部创建bean

<!--内部对象注入-->
<bean id="teacher2" class="org.xiji.enty.Teacher">
    <property name="teacherName" value="小久"></property>
    <property name="user" >
        <bean id="user" class="org.xiji.enty.User">
            <property name="username"   value="小菊"></property>
            <property name="password" value="123456"></property>
        </bean>
    </property>
</bean>

        外部引入级联赋值

                通过property ref="外部bean对象id" 在通过property中name="bean对象+属性"  和value=“赋值”

<!--外部对象注入+级联属性赋值-->
<bean id="teacher3" class="org.xiji.enty.Teacher">
    <property name="teacherName" value="惜己"></property>
    <property name="user" ref="user2" ></property>
    <property name="user.username" value="小明"></property>
    <property name="user.password" value="123456"></property>
</bean>

3.List集合注入

        在property标签内部使用list标签,并且通过<ref bean=“外部beanid”>的方式引入bean

<!--list集合注入-->
<bean id="teacher4" class="org.xiji.enty.Teacher">
    <property name="teacherName" value="小光"></property>

    <property name="listUser">
        <list>
            <ref bean="user"></ref>
            <ref bean="user2"></ref>
        </list>
    </property>
</bean>

4.Map集合注入

       通过property标签内部使用<map>标签,中的<entry>标签   Key(value) 和ref(引入外部对象)对map集合赋值

<!--mapper注入-->
<bean id="teacher5" class="org.xiji.enty.Teacher">
    <property name="teacherName" value="小明"></property>
    <property name="mapUser">
        <map>
            <entry>
                <key>
                    <value>xiji</value>
                </key>
                <ref bean="user"></ref>

            </entry>
            <entry>
                <key>
                    <value>
                        zs
                    </value>
                </key>
                <ref bean="user2"></ref>
            </entry>
        </map>
    </property>
</bean>

测试结果

5.通过util注入map和list

需要在头部标签导入

beans外部标签加入

xmlns:util ="http://www.springframework.org/schema/util"

xsi:schemaLocation="
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd "
 

具体实现

<!--通过util导入list集合和map集合-->
<!--
    beans外部标签加入
    xmlns:util ="http://www.springframework.org/schema/util"

    xsi:schemaLocation="
    http://www.springframework.org/schema/util
    http://www.springframework.org/schema/util/spring-util.xsd
    "
-->

<util:list id="mylist" >
    <ref bean="user" ></ref>
    <ref bean="user2"></ref>
</util:list>

<util:map id="mymap">
    <entry>
        <key>
            <value>xiji</value>
        </key>
        <ref bean="user"></ref>
    </entry>
    <entry>
        <key>
            <value>zs</value>
        </key>
        <ref bean="user2"></ref>
    </entry>
</util:map>
<bean id="teacher6" class="org.xiji.enty.Teacher">
    <property name="teacherName" value="外部测试"></property>
    <property name="listUser" ref="mylist"></property>
    <property name="mapUser" ref="mymap"></property>
</bean>

        

  • 17
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
spring-beans.jar是Spring框架中的一个核心JAR文件,它包含了Spring容器的基本组件BeanFactory和ApplicationContext,以及与Bean相关的一系列类和接口。如果没有spring-beans.jar,Spring框架将不能运行。 首先,Spring框架的核心思想是依赖注入(Dependency Injection,DI)和控制反转(Inversion of Control,IOC)。这意味着对象之间的依赖关系将不再由对象自身管理,而是由Spring容器来管理。在这种情况下,Spring容器必须能够创建和管理对象的实例,以及管理它们之间的依赖关系。这就是spring-beans.jar的作用。 BeanFactory是Spring容器的基本组件之一。它是一个工厂类,负责管理Bean的生命周期、创建Bean实例、管理Bean的依赖关系和Bean之间的通信。ApplicationContext是BeanFactory的扩展,除了BeanFactory的功能,它还提供了事件机制、AOP(面向切面编程)、异常处理等其他的功能。Spring框架的大部分应用程序都需要使用BeanFactory或ApplicationContext来管理Bean。 另外,spring-beans.jar还包含了一系列与Bean相关的类和接口。例如,BeanInfo、BeanDefinition、BeanWrapper、BeanPostProcessor、InitializingBean、DisposableBean等,这些类和接口提供了在Bean创建、初始化、销毁等过程中的扩展点,可以让开发者在这些过程中加入自己的逻辑,实现自己的扩展。 总之,spring-beans.jar可以说是Spring框架的核心之一,没有它,Spring框架将不能运行。它提供了创建、管理Bean实例以及它们之间的依赖关系、扩展点等功能,是Spring框架中不可替代的重要组件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值