Spring-ioc容器

IOC(InverseofControl)是一种设计思想,通过Spring框架的IOC容器实现,它将对象的创建和依赖查找的控制权交给容器,降低了程序的耦合性,增强了灵活性。文章介绍了两种实现方式:无参构造器注入和构造器注入,包括下标索引、参数类型和参数名的赋值方法。
摘要由CSDN通过智能技术生成

IOC容器

IOC(Inverse of Control: 反转控制)是一种设计思想

理解ioc控制反转

传统的创建与依赖查找是在你对象内部直接实现与控制,而实现ioc意味 将原本在程序中手动创建对象的控制权,交由Spring框架 - ioc容器来管理,这样对象的控制权实现反转且降低了程序的耦合性,程序员无需再关心对象的创建,只需关注业务的本身。ioc容器是Spring用来实现ioc的载体,ioc容器实际上就是一个Map(Key,Value),Map中存放各种对象*

ioc作用是什么?

在Java开发中,传统开发是由我们在类内部主动创建对象,不仅会使类与类之间耦合,而且客户为增加新方法属性等时,在原码直接修改也是强烈不建议的

而有了ioc容器后,注入创建和查找依赖对象的控制权就交给了ioc容器,是对象之间是松散耦合,这样也方便测试,利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活。

实现方式

1,使用无参构造创建对象,默认!

public class User {
    private  String Name;
    public User() {
        System.out.println("使用无参构造,实现了name的注入");
    }
    public String getName() {
        return Name;
    }
​
    public void setName(String name) {
        Name = name;
    }
    public void show(){
        System.out.println("Name= "+Name);
    }
}
<?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
        https://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="user" class="Com.gl.pojo.User">
        <property name="name" value="gl"/>
    </bean>
 
</beans>
public class Mytext01 {
    public static void main(String[] args) {
        ClassPathXmlApplicationContext cpx = new ClassPathXmlApplicationContext("applicationcontext.xml");
        User user = cpx.getBean("user", User.class);
        user.show();
/*  控制台结果:
    使用无参构造,实现了name的注入
    Name= gl
*/
    }
}

二,使用构造器注入

1,通过 ---下标索引赋值

public class User {
    private String Name;
    private String Sex;
    ---------------------0-----------1------------------
    public User(String name, String sex) {
        Name = name;
        Sex = sex;
    }
    --------------------------------------------------
    public void show() {
        System.out.println("Name= " + Name);
    } }
    <bean id="user" class="User">
<!--下标索引赋值-->
        <constructor-arg index="0" value="gl_1"/>
        <constructor-arg index="1" value="男"/>
    </bean>
public class Mytext01 {
    public static void main(String[] args) {
        ClassPathXmlApplicationContext cpx = new ClassPathXmlApplicationContext("applicationcontext.xml");
        User user = cpx.getBean("user", User.class);
        user.show();
    } }

2,通过---参数类型赋值(不建议)

public class User {
    private String Name;
    private int Age;
    public User(String name, int age) {
        Name = name;
        Age = age;
    }
    public void show() {
        System.out.println("Name= " + Name);
        System.out.println("Age= " + Age);
    }
}
    <bean id="user" class="User">
<!--类型赋值-->
        <constructor-arg type="java.lang.String" value="gl-1"/>
        <constructor-arg type="int" value="1"/>
    </bean>

3,通过---参数名进行赋值

public class User {
    private String Name;
    private int Age;
    public User(String name, int age) {
        Name = name;
        Age = age;
    }
    public void show() {
        System.out.println("Name= " + Name);
        System.out.println("Age= " + Age);
    }
<!--通过参数名进行赋值-->
<bean class="User" id="user">
    <constructor-arg name="name" value="gl"/>
    <constructor-arg name="age" value="1"/>
</bean>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值