栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

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

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

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
            
        
        
            
                
                
                
                
            
        

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

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

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