spring-IOC注入

**spring-IOC注入 ** xml格式 简答的构造注入 先在src目录下创建一个xml文件 , 最好取名为applicationContext.xml ,然后在xml文件中复制spring配置文件所需要的约束

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns=“http://www.springframework.org/schema/beans

xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance

xsi:schemaLocation=“http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd”>

然后把你写程序过程中所需要调用的类 ,然后在里面声明类的bean , 声明就是把类的路径 , id,name等信息告诉spring容器

然后初始化容器

public static void main(String[] args) {

//初始化Spring容器,当Spring容器初始化时,会自动加载配置文件,然后根据配置文件中的内容初始化Bean

ApplicationContext ac = new ClassPathXmlApplicationContext(“applicationContext.xml”);

//通过getBean(在配置文件中设置的id或者name)方法获取到配置文件里所需类

Cat cat = ac.getBean(“cat”);

System.out.println(cat);

}

这样就获取到了cat类

上面时直接获取到类对象 , 那么怎么在通过spring容器获取对象的时候同时给要获取到的属性赋值呢

可以通过构造注入

构造注入时 ,注入几个属性 ,那么该类就应该有所对应的构造方法 ,提供有参构造方法 , 同时必须提供无参构造的

//构造注入通过bean里的constructor-arg来注入
         
         
     

1)构造注入可以再构造器中决定依赖关系的注入顺序,有限依赖的优先注入。例如,组件中其它依赖关系的注入,常常需要依赖于Datasource的注入。采用构造注入,可以在代码中清晰地决定注入顺序。 2)对于依赖关系无需变化的Bean,构造注入更加有用。因为没有setter方法,所有的依赖关系全部在构造器内设定。因此,无需担心后续代码对依赖关系的破坏。 3)依赖关系只能在构造器中设定,则只有组建的创建者才能改变组建的依赖关系。队组建的调用者而言,组件内部的依赖关系完全透明,更符合高内聚的原则。

设置注入

需要类有无惨构造方法 , 和构造注入不同 , 设置注入可以任意的为任意的属性设置 ,但是必须要有setter方法

//property是设置注入的关键字
         
         
     

静态工厂注入

public class StaticFactory {
    
    public static User getUser(){
        return new User();
    }
}

动态工厂注入

public class DynamicFactory {
    public  User getUser(String name){
        return new User(name);
    }

}

 

还有对象注入 ,集合注入 ,map注入等

                                                                                1                  8                  23                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        

@org.junit.Test
    public void test() {
     ApplicationContext ac = new ClassPathXmlApplicationContext(“applicationContext.xml”);
     User user =  ac.getBean(“user”,User.class);
     int[] all = user.getAll();
     for (int i : all) {
         System.out.println(i);
    }
    
     
    Cat[] cats =  user.getCat();
    for (Cat cat : cats) {
        System.out.println(cat);
    }
    
    List list = user.getList();
    for (Cat cat : list) {
        System.out.println(cat);
    }
    
    
    Map<String, String> map = user.getMap();
    Set set = map.keySet();
    for (String s : set) {
        System.out.println(s+":"+map.get(s));
    }
    
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值