Spring 控制反转 依赖注入

Spring 控制反转 依赖注入

SpringFramework

在这里插入图片描述

IOC(Inversion of Control) 控制反转

将程序对象创建的控制权转移到外部,使用对象时,由主动new对象转换为外部提供对象。
spring提供了一个Ioc容器,负责对象的创建、初始化等一些列工作,被Ioc容器创建和管理的对象统称为Bean.

DI(Dependency Injection) 依赖注入

在Ioc容器中建立bean与bean 之间依赖关系的过程,称为依赖注入(DI)。

目的:
解耦,使用对象时不仅可以直接从容器中获取,并且取到的bean已经绑定了所有依赖关系。
applicationContext.xml内配置bean

Ioc实现

1、配置bean

<?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">
      <bean id="userdao" class="com.ck.dao.UserDaoImp" scope="prototype" init-method="init" destroy-method="destory"/>
</beans>

2、创建bean

// 获取Ioc容器
ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
//获取bean  返回对应对象
UserDao userdao=ctx.getBean("userdao");

DI实现

1、配置bean的属性

<?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">
      <bean id="userdao" class="com.ck.dao.UserDaoImp" scope="prototype" init-method="init" destroy-method="destory"/>
 <bean id="userService" class="com.ck.dao.UserServiceImp" scope="prototype" >
//<!--property 标签表示配置当前bean属性-->  //删除new创建对象,通过DI代替new创建实例
<property name="userDao" ref="userDao">
</bean>
</beans>

bookDao.java

package com.upc.dao.impl;

public interface bookDao {
    public  void save();
}

bookService.java

package com.upc.dao.impl;

import java.lang.reflect.Array;
import java.util.*;

public class bookDaoImpl implements bookDao {
    private  int[] array;
    private List<String> list;
    private Set<String> set;
    private Map<String,String> map;
    private Properties properties;

    public Properties getProperties() {
        return properties;
    }

    public void setProperties(Properties properties) {
        this.properties = properties;
    }

    public Map<String, String> getMap() {
        return map;
    }

    public void setMap(Map<String, String> map) {
        this.map = map;
    }

    public Set<String> getSet() {
        return set;
    }

    public void setSet(Set<String> set) {
        this.set = set;
    }

    public int[] getArray() {
        return array;
    }

    public void setArray(int[] array) {
        this.array = array;
    }

    public List<String> getList() {
        return list;
    }

    public void setList(List<String> list) {
        this.list = list;
    }

    public void save() {
    System.out.println("save ...");
    System.out.println("数组"+Arrays.toString(array));
    System.out.println(list);
    System.out.println(set);
    System.out.println(map);
    System.out.println(properties);
    }
}

applicationContext.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">

<bean id="bookDao" class="com.upc.dao.impl.bookDaoImpl">
    <property name="array">
        <array>
            <value>100</value>
            <value>200</value>
            <value>300</value>
<!--           引用类型 <ref bean="beanId"/>-->
        </array>
    </property>
    <property name="list">
        <list>
            <value>"111"</value>
            <value>"222"</value>
            <value>"333"</value>
        </list>
    </property>
    <property name="set">
        <set>
            <value>100</value>
            <value>100</value>
            <value>300</value>
        </set></property>
        <property name="map">
            <map>
                <entry key="price" value="200"/>
            </map>
        </property>
    <property name="properties">
        <props>
            <prop key="price">200</prop>
        </props>
    </property>


</bean>
</beans>

main.java


import com.upc.dao.impl.bookDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class main {
    public static void main(String[] args) {

        ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
        bookDao bookdao= (bookDao) ctx.getBean("bookDao");
        bookdao.save();

    }
}

结果

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值