06Spring - Spring依赖注入(基于XML)

简介: 06Spring - Spring依赖注入(基于XML)

Spring依赖注入

依赖注入的概念

它是Spring框架核心IOC的具体实现方式。简单的说,就是坐等框架把对象传入,而不用我们自己去获取。

1)构造函数注入(constructor-arg标签)

通过配置的方式,给构造函数的成员变量赋值。

代码:

public class CustomerServiceImpl implements ICustomerService{
    private String name;
    private Integer age;
    private Date birthday;
    public CustomerServiceImpl(String name, Integer age, Date birthday) {
        this.name = name;
        this.age = age;
        this.birthday = birthday;
    }
    @Override
    public void saveCustomer() {
    }
}

配置如下:

<bean id="customerService" class="com.service.impl.CustomServiceImpl">
  <constructor-arg name="name" value="张三"></constructor-arg>
  <constructor-arg name="age" value="18"></constructor-arg>
  <constructor-arg name="birthday" value="now"></constructor-arg>
</bean>
<bean id="now" class="java.util.Date"></bean>

配置解析:

index:指定参数在构造函数参数列表的索引位置

type: 指定参数在构造函数中的数据类型

name: 指定参数在构造函数的名称

value:它能赋的值是其它的bean类型,也就是说,必须得是在配置文件中配置过的bean

2)set方法注入(property标签)

代码:

public class CustomerServiceImpl implements ICustomerService{
    private String name;
    private Integer age;
    private Date birthday;
    public void setName(String name) {
        this.name = name;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
    @Override
    public void saveCustomer() {
    }
}

配置如下:

<bean id="customerService" class="com.service.impl.CustomServiceImpl">
  <property name="name" value="张三"></constructor-arg>
  <property name="age" value="18"></property>
  <property name="birthday" value="now"></property>
</bean>
<bean id="now" class="java.util.Date"></bean>

配置解析:

name: 找的是类中set方法后面的部分

value:给属性赋值是基本数据类型和String类型的

ref:给属性复制是其它的bean类型

3)使用p名称空间注入数据(p标签)

这种方式是通过在xml中导入p空间名称,使用p:propertyName 来注入数据,它的本质仍然是调用类中的set方法实现注入功能。

代码:

public class CustomerServiceImpl implements ICustomerService{
    private String name;
    private Integer age;
    private Date birthday;
    public void setName(String name) {
        this.name = name;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
    @Override
    public void saveCustomer() {
    }
}

配置如下:

4)注入集合属性

代码:

package cn.itcast.domain;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Properties;
public class CollBean 
{
  public CollBean()
  {
    System.out.println(11111);
  }
  private String[] ss;
  private List ll;
  private Map mm;
  private Properties properties; //键值对
  public void setSs(String[] ss) {
    this.ss = ss;
  }
  public void setLl(List ll) {
    this.ll = ll;
  }
  public void setMm(Map mm) {
    this.mm = mm;
  }
  public void setProperties(Properties properties) {
    this.properties = properties;
  }
  @Override
  public String toString() {
    return "CollBean [ss=" + Arrays.toString(ss) + ", ll=" + ll + ", mm=" + mm + ", properties=" + properties + "]";
  }
}

配置文件:

<bean id="collBean" class="cn.itcast.domain.CollBean">
         <property name="ss">
            <!-- 数组类型 -->
            <list>
              <value>aaa</value>
              <value>bbb</value>
              <value>ccc</value>
            </list>
         </property>
         <property name="ll">
            <!-- list类型  -->
            <list>
              <value>111</value>
              <value>222</value>
              <ref bean="car"/>
            </list>
         </property>
         <property name="mm">
          <!-- map -->
          <map>
            <entry key="k1" value="aaa"></entry>
            <entry key="k2" value="bbbb"></entry>
            <entry key="k3" value-ref="car"></entry>
          </map>
         </property>
         <property name="properties">
          <!-- properties类型 -->
          <props>
            <prop key="hibernate.username">root</prop>
            <prop key="hibernate.password">1234</prop>
          </props>
         </property>
       </bean>
目录
相关文章
|
6月前
|
存储 Java 文件存储
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录—— logback.xml 配置文件解析
本文解析了 `logback.xml` 配置文件的详细内容,包括日志输出格式、存储路径、控制台输出及日志级别等关键配置。通过定义 `LOG_PATTERN` 和 `FILE_PATH`,设置日志格式与存储路径;利用 `&lt;appender&gt;` 节点配置控制台和文件输出,支持日志滚动策略(如文件大小限制和保存时长);最后通过 `&lt;logger&gt;` 和 `&lt;root&gt;` 定义日志级别与输出方式。此配置适用于精细化管理日志输出,满足不同场景需求。
1360 1
|
6月前
|
XML Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——基于 xml 的整合
本教程介绍了基于XML的MyBatis整合方式。首先在`application.yml`中配置XML路径,如`classpath:mapper/*.xml`,然后创建`UserMapper.xml`文件定义SQL映射,包括`resultMap`和查询语句。通过设置`namespace`关联Mapper接口,实现如`getUserByName`的方法。Controller层调用Service完成测试,访问`/getUserByName/{name}`即可返回用户信息。为简化Mapper扫描,推荐在Spring Boot启动类用`@MapperScan`注解指定包路径避免逐个添加`@Mapper`
238 0
|
11月前
|
XML Java 数据格式
Spring从入门到入土(xml配置文件的基础使用方式)
本文详细介绍了Spring框架中XML配置文件的使用方法,包括读取配置文件、创建带参数的构造对象、使用工厂方法和静态方法创建对象、对象生命周期管理以及单例和多例模式的测试。
488 7
Spring从入门到入土(xml配置文件的基础使用方式)
|
9月前
|
XML Java 数据格式
【SpringFramework】Spring IoC-基于XML的实现
本文主要讲解SpringFramework中IoC和DI相关概念,及基于XML的实现方式。
183 69
|
XML Java 数据格式
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
这篇文章是Spring5框架的实战教程,主要介绍了如何在Spring的IOC容器中通过XML配置方式使用外部属性文件来管理Bean,特别是数据库连接池的配置。文章详细讲解了创建属性文件、引入属性文件到Spring配置、以及如何使用属性占位符来引用属性文件中的值。
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
|
9月前
|
设计模式 XML Java
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
本文详细介绍了Spring框架的核心功能,并通过手写自定义Spring框架的方式,深入理解了Spring的IOC(控制反转)和DI(依赖注入)功能,并且学会实际运用设计模式到真实开发中。
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
|
9月前
|
XML Java 数据格式
使用idea中的Live Templates自定义自动生成Spring所需的XML配置文件格式
本文介绍了在使用Spring框架时,如何通过创建`applicationContext.xml`配置文件来管理对象。首先,在resources目录下新建XML配置文件,并通过IDEA自动生成部分配置。为完善配置,特别是添加AOP支持,可以通过IDEA的Live Templates功能自定义XML模板。具体步骤包括:连续按两次Shift搜索Live Templates,配置模板内容,输入特定前缀(如spring)并按Tab键即可快速生成完整的Spring配置文件。这样可以大大提高开发效率,减少重复工作。
使用idea中的Live Templates自定义自动生成Spring所需的XML配置文件格式
|
9月前
|
XML Java 数据格式
Spring容器Bean之XML配置方式
通过对以上内容的掌握,开发人员可以灵活地使用Spring的XML配置方式来管理应用程序的Bean,提高代码的模块化和可维护性。
225 6
|
9月前
|
Java 数据库 数据安全/隐私保护
轻松掌握Spring依赖注入:打造你的登录验证系统
本文以轻松活泼的风格,带领读者走进Spring框架中的依赖注入和登录验证的世界。通过详细的步骤和代码示例,我们从DAO层的创建到Service层的实现,再到Spring配置文件的编写,最后通过测试类验证功能,一步步构建了一个简单的登录验证系统。文章不仅提供了实用的技术指导,还以口语化和生动的语言,让学习变得不再枯燥。
160 2
|
12月前
|
XML Java 数据格式
Spring IOC—基于XML配置Bean的更多内容和细节(通俗易懂)
Spring 第二节内容补充 关于Bean配置的更多内容和细节 万字详解!
599 18
Spring IOC—基于XML配置Bean的更多内容和细节(通俗易懂)