spring-IOC容器必须掌握的知识

spring-IOC容器必须掌握的知识,第1张

spring-IOC容器必须掌握的知识 一.什么是IOC(控制反转)

        将对象创建权交于spring,由IOC容器创建和销毁对象,不需要再自己去new对象。

         目的:方便解耦,简化开发

一个简单的实际案例:

1.创建一个User类

public class User {
    public void add(){
        System.out.println("add....");
    }
}

 2.创建XML文件




3.创建测试类

public class Text {
    @Test
    public void testAdd(){
        //加载Spring配置文件
        ApplicationContext context=new ClassPathXmlApplicationContext("bean.xml");
        
        //获取配置创建对象
        User user = context.getBean("user", User.class);
        System.out.println(user);
        //调用User中的方法
        user.add();
    }
}
 二.spring的XML配置文件  1.Bean标签基本配置

用于配置对象交于spring来创建

默认是调用类中的无参构造函数,如果没有无参构造函数则不能创建成功。

id:Bean实例在spring容器中的唯一标识

class:Bean的全限定名称(即某一类的全类名)

2.Bean标签范围配置 

scope:指对象的作用范围 

取值范围说明singleton默认值,单例的(只能创建一个对象)prototype多例的(可以创建多个不同对象)requestweb项目中,spring创建一个bean对象,将对象存入request域中sessionweb项目中,spring创建一个bean对象,将对象存入session域中

1)当 scope 的取值为 singleton 时

 Bean 的实例化个数:1个
 Bean 的实例化时机:当 Spring 核心文件被加时,实例配置的 Bean 实例
对象创建:当应用加载,创建容器时,对象就被创健了

对象运行:只要容器在,对象一直活着
对象销毁:当应用卸载,销毁容器时,对象就被销毁了

2)当 scope 的取值为 prototype 时
 Bean 的实例化个数:多个
 Bean 的实例化时机:当调用getBean0方法时实例化 Bean 
对象创建:当使用对家时,创健新的对象实例

对象运行:只要对象在使用,就一直活着
对象销毁:当对象长时间不用时,被 Java 的垃圾回收器回必

3.Bean生命周期配置 

init-method:指定类中的初始化方法名称 

destroy-method:指定类中销毁方法名称 

public class User {
    public void add(){
        System.out.println("add....");
    }
    public void init(){
        System.out.println("初始化...");
    }
    public void destroy(){
        System.out.println("销毁中...");
    }
}
4.Bean实例化三种方式

1.无参构造方法实例化 (默认,重点掌握)

2.工厂静态方法实例化(了解)

//创建Factory类
public class Factory {
    //创建静态方法,返回User类对象
    public static User getUser(){
        return new User();
    }
}

去找Factory类,发现有factory-method="getUser",就找getUser()方法获取到了User对象

 3.工厂实例方法实例化(了解)

5.1.Bean依赖注入  注入方式使用标签

属性

set

ref:引用值

value:直接设置值

有参构造

 1.set方式注入

//创建UserServer,在此类中调用User类中的add()方法
public class UserServer {


     //通过在XML文件中提前注入User对象的方式
    private User user;
    //set方法
    public void setUser(User user) {
        this.user = user;
    }
    public void add(){
        //调用User中的方法
        user.add();
    }
}

XML中的配置,使用标签






     

 测试类

public class Text {
    @Test
    public void testAdd(){
        //加载Spring配置文件
        ApplicationContext context=new ClassPathXmlApplicationContext("bean.xml");
    
        //获取配置创建对象
        UserServer userServer = context.getBean("userServer", UserServer.class);
        //调用UserServer中的方法
        userServer.adduser();
    }
}

2.有参构造函数注入

public class UserServer {

    private int x;
    public UserServer(int x) {
        this.x = x;
    }
}

使用标签

  
        
        
    
5.2.Bean依赖注入 的数据类型

1.普通数据类型

public class UserServer {

   private int y;
   private String s;
   public void setY(int y) {
        this.y = y;
    }

   public void setS(String s) {
        this.s = s;
    }
}

        
        

2.引用数据类型 

3.集合数据类型  

public class UserServer {

  private List strList;
  private Map map;
  public void setStrList(List strList) {
        this.strList = strList;
    }

  public void setMap(Map map) {
        this.map = map;
    }
}

        
            
                aaa
                bbb
                ccc
            
        
        
            
                
                
                
                
            
        

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/3995075.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-10-22
下一篇 2022-10-22

发表评论

登录后才能评论

评论列表(0条)

保存