栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

DI依赖注入

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

DI依赖注入

5、DI依赖注入 1、概念

IOC:控制反转,从容器的角度考虑,spring容器控制资源,并给到别的应用程序资源。

DI:依赖注入,从应用程序的角度考虑,它是被IOC容器注入资源的,这也就叫依赖注入。

  • 依赖:bean对象的创建依赖于容器
  • 注入:bean对象中的所有属性,由容器来注入

2、依赖注入的两种方式
  • set注入
  • 构造器注入
1、set注入–属性注入(主流)

主要是注入引用数据类型

1、将要注入的到别的地方的类注册到spring容器当中

2、将要被注入的类注册到spring容器当中,并且这个类中要有成员变量,然后又set方法

3、在要被注入的类的bean中注册property属性,然后name=set的名字开头小写,id就是这个要注册到别的地方的这个类的id

应用场景:业务层需要使用dao层的方法,传统的做法就是创建对象,在spring中就不一样了,是把这两个类都注册到spring中,然后给一个成员变量和set,接着把这个类的id和成员的name写进去。

UserDao

package com.zhu.dao;

public interface UserDao {

    public void add();

}

UserDaoImpl

package com.zhu.dao;

public class UserDaoImpl implements UserDao{
    private String name;


    public void add() {
        System.out.println("这个添加方法运行了...");
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

UserService

package com.zhu.service;

public interface UserService {

    public void add();

}

UserServiceImpl

package com.zhu.service;

import com.zhu.dao.UserDao;

public class UserServiceImpl implements UserService{
    //这里业务层要调用dao层的类,以前是直接创建对象使用,这里使用spring容器的set注入
    private UserDao userDao;
    private int num;

    @Override
    public void add() {
        System.out.println("service 跑起来了");
        userDao.add();
        System.out.println(num);
    }

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

    public void setNum(int num) {
        this.num = num;
    }
}

applicationContext.xml




    

        
    


    
        
        
    


Test

package com.zhu.test;

import com.zhu.dao.UserDaoImpl;
import com.zhu.service.UserServiceImpl;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test {

    public static void main(String[] args) {

        //2、加载spring容器
        ApplicationContext context =
                new ClassPathXmlApplicationContext("applicationContext.xml");
        //3、从spring容器中获取bean资源,获取到的也就是这个类的对象
        UserServiceImpl userService = (UserServiceImpl) context.getBean("userService");
        userService.add();

    }

}

2、构造器注入(了解)

构造器注入和set注入类似

name:适用于任何时候(最好用)

type:适用于类型不一样的时候(几乎用不到)

index:根据下标给属性设置值(鸡肋)如果定义好了之后,再往构造方法里面加值,整个坐标就会被打乱,所以说这个属性很垃圾,别用!!!!

  
 
        

3、集合注入

简单,就像注入属性一样。


        
        
        
        
        
           
               name
               age
           
        

        
            
                1111
                2
            
        
            
            
                root
                123456
            
        
    
6、p命名空间(了解)

7、springEL表达式(了解)

使用EL表达式:ref就可以改成value了

value="#{userDao}"

了解即可,没啥用

8、外部properties文件

jdbc的外部文件

命名空间这里需要修改很多



    

    

        
        

9、import导入配置文件

原因:好几个人同时维护一个spring容器,会出现很多问题

解决:使用主和副配置文件解决,一个文件是主文件,后面的副文件都挂在主文件上面

    

  • spring容器也可以加载多个配置文件(了解,不会写)

10、ClassPathXmlApplicationContext对象

了解即可

11、第三方bean的配置方式
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/340903.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号