spring的两大核心思想

本文深入解析了Spring框架中的两个核心概念:IOC(控制反转)和DI(依赖注入)。介绍了如何通过Spring容器管理对象的创建和依赖关系,展示了通过配置文件实现对象实例化和依赖注入的过程。

IOC 控制反转

什么是IOC

把对象的创建权限转交给spring容器,让spring容器帮我们实例化对象,我们做的只是从spring容器中获取实例

package com.service;

import com.dao.impl.UserDaoImpl;
import com.factory.BeansFactory;
import com.service.impl.UserService;
import org.junit.Test;

public class UserServiceTest {


    /**
     *
     * JavaBean :实体类、所有的java类
     * 之前的方式调用Service
     */
    @Test
    public void testAddUser(){
        //1.实例化对象
        UserService userService =new UserService();//是我们自己创建的

        UserDaoImpl userDao = new UserDaoImpl();

        //2.调用方法
        userService.addUser();

        userDao.addUser();

    }

    /**
     * 通过工厂实例化UserService
     */

    public void testAddUser2(){

        //1.实例化工厂
        BeansFactory beansFactory = new BeansFactory("beans.properties");

        //2.通过工厂获取UserService的实例

        UserService userService =(UserService) beansFactory.getBean("userService");

        UserDaoImpl userDao =(UserDaoImpl) beansFactory.getBean("userDao");

        //3.调用对象的中的方法

        userService.addUser();

        userDao.addUser();

    }
}

DI 依赖注入

什么是依赖注入

依赖了一个spring容器注入的那个对象,在使用时需要使用set和get方法进行复制,以后还会用到其他方法

package com.dao.impl;

public class UserDaoImpl {

    public void addUser(){

    }
}

 

package com.service.impl;

import com.dao.impl.UserDaoImpl;

public class UserService {

    public UserDaoImpl getUserDao() {
        return userDao;
    }

    public void setUserDao(UserDaoImpl userDao) {
        this.userDao = userDao;
    }

    private UserDaoImpl userDao;//这里只负责声明,spring会自动注入进来


    public void addUser(){
        System.out.println("UserServic.addUser");

        userDao.addUser();
    }
}

 

<?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>标签,指的就是javabean
    id:bean的唯一标识
    class:bean的全类名
    -->
    <bean id="userService" class="com.service.impl.UserService">
        <!--
        给userService里的userDao属性赋值
        把userDao实例注入给userService中的属性,注入的时候会调用set,get方法
        -->
        <property name="userDao" ref="userDao"/>
    </bean>


    <bean id="userDao" class="com.dao.impl.UserDaoImpl"/>


</beans>

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值