作为spring的核心之一,IOC一直是受到广大程序员欢迎的,想要使用IOC就必须要注入,你知道IOC有几种注入方式吗?又该怎么实现呢?下面一起来看看吧。
在spring IOC中一共有三种依赖注入方式
一、set注入
实现:
Student类
package com.cnblogs.bean; public class Student { // 学号 private String sNo; private String name; private int age; // 性别 private String sex; //年级 private String grade; public Student() { super(); } public Student(String sNo, String name, int age, String sex, String grade) { super(); this.sNo = sNo; this.name = name; this.age = age; this.sex = sex; this.grade = grade; } // set和get方法 // toString方法() }
A.java类
package com.cnblogs.bean; public class A { private String desc; private Student stu; public A() { super(); // TODO Auto-generated constructor stub } public A(String desc, Student stu) { super(); this.desc = desc; this.stu = stu; } // set和get方法 // toString方法() }
set.xml中
<!-- 基于set方法的注入 --> <bean name="stu" class="com.cnblogs.bean.Student"> <property name="sNo" value="1001"></property> <property name="name" value="jack"></property> <property name="age" value="12"></property> <property name="sex" value="male"></property> <property name="grade" value="三年级"></property> </bean> <!-- 注入引用类型 --> <bean name="A" class="com.cnblogs.bean.A"> <property name="desc" value="A组合了Student类对象"></property> <!-- ref属性表示调用这个setStudent方法的时候要用的参数是名字为stu的对象 --> <property name="stu" ref="stu"></property> </bean>
1.在标签中,name和id会起到标识这个对象的作用,id会帮我们检查给对象起的名字是否规范,name不会检查这些东西。class属性是一个类的全限定名,标识配置那个类。
2.springIoC默认是已单例模式管理对象,即通过相同的名字多次拿出来的对象一样,可以再标签中加属性scope="prototype"代表非单例,scope="Singleton"代表单例模式。
注:set方式底层会用到一个bean类的set方法,如果bean类的成员变量没有set方法却采用了set方式注入会报错。
二、构造器注入
构造器有两种注入方式:
1. 根据参数类型注入
<!-- 根据参数类型 --> <bean name="stu1" class="com.cnblogs.bean.Student"> <constructor-arg type="String" value="1001"></constructor-arg> <constructor-arg type="String" value="jack"></constructor-arg> <constructor-arg type="int" value="12"></constructor-arg> <constructor-arg type="String" value="male"></constructor-arg> <constructor-arg type="String" value="三年级"></constructor-arg> </bean>
2. 一个根据下标注入
<!-- 根据下标 --> <bean name="stu2" class="com.cnblogs.bean.Student"> <constructor-arg index="0" value="1002"></constructor-arg> <constructor-arg index="1" value="tina"></constructor-arg> <constructor-arg index="2" value="12"></constructor-arg> <constructor-arg index="3" value="female"></constructor-arg> <constructor-arg index="4" value="三年级"></constructor-arg> </bean>
三、接口注入
接口注入模式的历史已经有一段时间了,因此在许多容器中都有使用到,但因为其时代性原因,灵活性与易用性逊色其他两种注入模式许多,因此,现在的IOC专题内已经很少使用了。
以上就是IOC注入方式的所有内容了,想了解更多与之相关的java常见问答知识,请关注我们的网站吧,我们这里,什么都有~。
推荐阅读: