Spring的简介ioc容器及注入方式2

简介: Spring的简介ioc容器及注入方式2

三.Spring的注入方式

1.set注入

1.1 准备好Action层,定义好属性,提供get,set方法

package com.YU.ioc.web;
import com.YU.ioc.service.UserService;
import com.YU.ioc.service.impl.UserServiceImpl1;
import java.util.List;
/**
 * @author YU
 * @create 2023-08-14 18:29
 */
public class BookAction {
    private UserService userService;
    private String bname;//书名
    private int date;//发行日期
    private List<String> people;//适用人群
    public String getBname() {
        return bname;
    }
    public void setBname(String bname) {
        this.bname = bname;
    }
    public int getDate() {
        return date;
    }
    public void setDate(int date) {
        this.date = date;
    }
    public List<String> getPeople() {
        return people;
    }
    public void setPeople(List<String> people) {
        this.people = people;
    }
    public void pros() {
        System.out.println(this.bname);
        System.out.println(this.date);
        System.out.println(this.people);
    }
    public UserService getUserService() {
        return userService;
    }
    public void setUserService(UserService userService) {
        this.userService = userService;
    }
    public String update() {
        userService.update();
        return "list";
    }
}

2.配置好Xml文件

<bean class="com.YU.ioc.web.BookAction" id = "bookAction">
        <property name="userService" ref="userServiceImpl1"></property>
        <property name="bname" value="亚马逊漂流记"></property>
        <property name="date" value = "12"></property>
        <property name="people" >
            <list>
                <value>儿童</value>
                <value>青少年</value>
            </list>
        </property>
    </bean>

3.编写方法,显示是否注入成功

4.测试

package com.YU.ioc.demo;
import com.YU.ioc.web.BookAction;
import com.YU.ioc.web.UserAction;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
 * @author YU
 * @create 2023-08-14 19:16
 */
public class Demo1 {
    public static void main(String[] args) {
        //处理用户请求时,获取spring上下文对象
        ClassPathXmlApplicationContext context = new                     ClassPathXmlApplicationContext("spring-context.xml");
        BookAction bookAction = (BookAction) context.getBean("bookAction");
        bookAction.pros();
    }
}

5.打印结果

显示注入成功

2.构造方法注入

1.准备好Action层,与set注入的不同的是,用的是构造方法注入

package com.YU.ioc.web;
import com.YU.ioc.service.UserService;
import java.util.List;
/**
 * @author YU
 * @create 2023-08-14 18:35
 */
public class UserAction {
    private UserService userService;
    private String uname;
    private int age;
    private List<String> hobby;
    public UserAction() {
    }
    public UserAction(String uname, int age, List<String> hobby) {
        this.uname = uname;
        this.age = age;
        this.hobby = hobby;
    }
    public void pros(){
        System.out.println(this.uname);
        System.out.println(this.age);
        System.out.println(this.hobby);
    }
    public UserService getUserService() {
        return userService;
    }
    public void setUserService(UserService userService) {
        this.userService = userService;
    }
    public String update(){
        userService.update();
        return "list";
    }
}

2.配置XML文件

<bean class="com.YU.ioc.web.UserAction" id = "userAction">
        <property name="userService" ref="userService"></property>
        <constructor-arg name="uname" value="小刘"></constructor-arg>
        <constructor-arg name="age" value = "18"></constructor-arg>
        <constructor-arg name="hobby" >
            <list>
                <value>打球</value>
                <value>读书</value>
            </list>
        </constructor-arg>
    </bean>

区别在于用到是construct-arg

3.编写测试方法,判断是否注入成功

4.测试

package com.YU.ioc.demo;
import com.YU.ioc.web.BookAction;
import com.YU.ioc.web.UserAction;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
 * @author YU
 * @create 2023-08-14 19:16
 */
public class Demo1 {
    public static void main(String[] args) {
        //处理用户请求时,获取spring上下文对象
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring-context.xml");
        UserAction userAction = (UserAction) context.getBean("userAction");
        userAction.pros();
    }
}

5.测试结果

显示注入成功

3.总结

构造方法注入强调依赖的必需性和不变性,适用于一次性注入全部依赖的情况。

Setter方法注入提供了更大的灵活性,允许在对象创建后动态地注入依赖,适用于需要可选依赖或在运行时修改依赖的情况。

在实践中,可以根据具体需求选择适合的注入方式,甚至可以将构造方法注入和Setter方法注入结合起来使用,以达到更好的灵活性和控制。

目录
相关文章
|
9天前
|
XML Java 数据格式
【SpringFramework】Spring IoC-基于XML的实现
本文主要讲解SpringFramework中IoC和DI相关概念,及基于XML的实现方式。
98 69
|
7天前
|
Java Spring 容器
【SpringFramework】Spring IoC-基于注解的实现
本文主要记录基于Spring注解实现IoC容器和DI相关知识。
40 21
|
14天前
|
设计模式 XML Java
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
本文详细介绍了Spring框架的核心功能,并通过手写自定义Spring框架的方式,深入理解了Spring的IOC(控制反转)和DI(依赖注入)功能,并且学会实际运用设计模式到真实开发中。
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
|
12天前
|
存储 Java 应用服务中间件
【Spring】IoC和DI,控制反转,Bean对象的获取方式
IoC,DI,控制反转容器,Bean的基本常识,类注解@Controller,获取Bean对象的常用三种方式
|
1月前
|
存储 缓存 Java
Spring面试必问:手写Spring IoC 循环依赖底层源码剖析
在Spring框架中,IoC(Inversion of Control,控制反转)是一个核心概念,它允许容器管理对象的生命周期和依赖关系。然而,在实际应用中,我们可能会遇到对象间的循环依赖问题。本文将深入探讨Spring如何解决IoC中的循环依赖问题,并通过手写源码的方式,让你对其底层原理有一个全新的认识。
57 2
|
5月前
|
XML Java 数据格式
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
这篇文章是Spring5框架的实战教程,主要介绍了如何在Spring的IOC容器中通过XML配置方式使用外部属性文件来管理Bean,特别是数据库连接池的配置。文章详细讲解了创建属性文件、引入属性文件到Spring配置、以及如何使用属性占位符来引用属性文件中的值。
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
|
7月前
|
XML Java 数据格式
Spring5系列学习文章分享---第一篇(概述+特点+IOC原理+IOC并操作之bean的XML管理操作)
Spring5系列学习文章分享---第一篇(概述+特点+IOC原理+IOC并操作之bean的XML管理操作)
54 1
|
4月前
|
XML Java 数据格式
Spring IOC—基于XML配置Bean的更多内容和细节(通俗易懂)
Spring 第二节内容补充 关于Bean配置的更多内容和细节 万字详解!
298 18
|
7月前
|
XML druid Java
Spring5系列学习文章分享---第二篇(IOC的bean管理factory+Bean作用域与生命周期+自动装配+基于注解管理+外部属性管理之druid)
Spring5系列学习文章分享---第二篇(IOC的bean管理factory+Bean作用域与生命周期+自动装配+基于注解管理+外部属性管理之druid)
77 0
|
5月前
|
XML Java 数据格式
Spring5入门到实战------3、IOC容器-Bean管理XML方式(一)
这篇文章详细介绍了Spring框架中IOC容器的Bean管理,特别是基于XML配置方式的实现。文章涵盖了Bean的定义、属性注入、使用set方法和构造函数注入,以及如何注入不同类型的属性,包括null值、特殊字符和外部bean。此外,还探讨了内部bean的概念及其与外部bean的比较,并提供了相应的示例代码和测试结果。
Spring5入门到实战------3、IOC容器-Bean管理XML方式(一)

热门文章

最新文章