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

Spring DI的理解与使用

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

Spring DI的理解与使用

在我们使用Spring DI之前,你需要先了解Spring IoC并且会简单的使用

传送门:Spring ioC的简单理解与使用_weixin_45506581的博客-CSDN博客

会简单使用Spring IoC之后,就可以开始使用Spring DI啦!

Spring DI:其中,DI 全称 Dependency InjectionDependency Injection(依赖注入),它是spring框架核心ioc的具体实现

作用:我们虽然通过控制反转,将对象的创建权交给了spring,但是代码中是不可能出现没有依赖的情况的,ioc只是降低了它们的依赖关系,但不会消除

例:当我们通过IoC创建一个对象后,如果这个对象里面还有一个 user对象 属性,那么我们就拿不到这个user对象的实例化,即 user == null

Spring DI注入有两种方式: 构造方法注入与set方法注入

上代码:

  目录结构: 

        

  user对象: 

package com.wanshi.pojo;


public class user {

    private String id;
    private String username;
    private String userpassword;
    private String realname;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getUserpassword() {
        return userpassword;
    }

    public void setUserpassword(String userpassword) {
        this.userpassword = userpassword;
    }

    public String getRealname() {
        return realname;
    }

    public void setRealname(String realname) {
        this.realname = realname;
    }
}

  userService对象:

package com.wanshi.service;

import com.wanshi.pojo.user;


public class userService {
    private user user;// 注:当对象为private的时候,需要写set方法来注入依赖
    //    public void setUser(com.wanshi.pojo.user user) {
//        this.user=user;
//    }
    private String name;
    //    public void setName(String name) {
//        this.name=name;
//    }

    userService(user user,String name){
        this.user=user;
        this.name=name;
    }


    @Override
    public String toString() {
        return "userService{" +
                "user=" + user +
                ", name='" + name + ''' +
                '}';
    }



}

  application.xml 代码:

        





        


        
             
             
        

    






单元测试 Test类 代码:

package com.wanshi.test;

import com.wanshi.service.userService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.io.IOException;

public class Test {


    @org.junit.Test
    public void Test() throws IOException {
//        初始化工厂对象,用于获取Spring容器中的bean对象
        ApplicationContext applicationContext=new ClassPathXmlApplicationContext("application.xml");
//        打印从Spring容器中拿到的userService对象
        userService userservice= (userService) applicationContext.getBean("userService");
        System.out.println(userservice);

    }

}

执行效果:

 构造方法注入与set方法注入只是在application.xml中,bean标签里的注入子标签不同而已:

 //构造方法注入user对象,使用ref属性,引用的是 
 ///构造方法注入常用数据类型,使用value属性

 //set方法注入user对象,前提是要有此属性的set方法,其余地方感觉与 constructor-arg标签相同
 //set方法注入常用数据类型

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/397295.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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