2019-05-23Spring入门

Spring是一个管理Bean的容器,一个轻量级框架

  • 使用Spring,需要引入对 应的依赖下载地址
    prom.xml
 
        UTF-8
        5.1.5.RELEASE
     
    
        
        
            org.springframework
            spring-web
            ${springFramework.version}
        
        
            org.springframework
            spring-webmvc
            ${springFramework.version}
        
        
            org.springframework
            spring-context
            ${springFramework.version}
        
        
            org.springframework
            spring-jdbc
            ${springFramework.version}
        
        
            org.springframework
            spring-test
            ${springFramework.version}
        
        
        
            org.apache.logging.log4j
            log4j
            2.10.0
        
        
            commons-logging
            commons-logging
            1.2
        
    
  • 管理对象,必须是一个接口一个实现类
/**
 * 战士
 */
public interface Fighter {
    void show();
}
/**
* 吕布,战士类的一个实现类
*/
public class LvBu implements Fighter {
    public void show() {
        System.out.println("战士吕布");
    }
}

IOC控制反转/DI依赖注入

回顾历史

之前我们创建对象的方式,是在一个类中主动new另一个类的对象,然后再调用其方法完成功能

public class Main {
    public static void main(String[] args) {
        // 获取对象 -- 以前的方式,主动创建
        Fighter f1 = new LvBu();
        f1.show();
    }
}

Main类掌握着Fighter类型对象的控制权(想创建就创建),这样带来一个缺点,当许多模块都需要使用Fighter类型对象时,一旦Fighter类型对象需要发生改变,需要大量的修改其他模块的代码才能满足需求,所以,Spring提出了一种新的获取对象的方式 -- 配置

spring配置文件

spring.xml




    
    
    
    



public class Main {
    public static void main(String[] args) {
        // 获取对象 -- 以前的方式,主动创建
//        Fighter f1 = new LvBu();
//        f1.show();

        // Spring的方式获取对象,需要把对象配置在xml文件中
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");
        Fighter lvbu = (Fighter)applicationContext.getBean("lvbu");
        Fighter guanyu = (Fighter)applicationContext.getBean("guanyu");
        lvbu.show(); // 战士吕布
        guanyu.show(); // 战士关羽
    }
}

使用配置的方式带来一个好处,当Fighter类型对象需要改变的时候,我们只需要修改spring.xml就可以了,不需要修改其他模块,便利了开发

IOC控制反转

对于java应用程序来说,对象的控制权逆转了,这个概念称为IOC--控制反转

DI依赖注入

对于spring来说,配置一个对象,相当于对其他调用者注入了一个可调用的对象

IOC控制反转和DI依赖注入没有区别,只是针对参照物不同的不同说法

属性注入

  • 构造器注入(前提:必须有有参构造器)


public class GuanYu implements Fighter {
    private String name;
    private int age;
    public GuanYu() {}
    public GuanYu(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public void show() {
        System.out.println(name+","+age);
    }
}


    
    
    
    
    

复杂对象



    
        
        
        
    
    
    
        
    

集合

  • setter注入

    
    
    

复杂对象



    
        
        
        
    
    
    
        
    

集合


        
        
        
        
        
            
                张飞
                马超
            
        
        
        
            
                
                
            
        
        
        
            
                
                
            
        
        
        
            
                
                
            
        
    
  • 接口注入(Spring不支持)

自动装配(了解)






    


    

====================



    
    
    
    
        
    
    
        
    

package com.neuedu.test;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;

public class GuanYu implements Fighter {
    private String name = "关羽";
    @Autowired
    @Qualifier("test2")// 转配的com.neuedu.test.Fang
    private Weapon weapon;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public void setWeapon(Weapon weapon) {
        this.weapon = weapon;
    }
    public void show() {
        System.out.println(name);
        weapon.showInfo();
    }
}

注解自动装配(重要)

spring.xml配置扫描包




    
    

你可能感兴趣的:(2019-05-23Spring入门)