IOC全称为 Inverse Of Control,表示控制反转。指的是程序员使用硬编码创建的对象转为由Spring容器来创建,对于对象生命周期的控制交给Spring容器来管理。控制反转解决了具有依赖关系的组件之间的强耦合,使得项目形态更加稳健
2. IOC的使用spring ioc的使用需要依赖于spring生态中的一些模块,如bean、core…
2.1 依赖导入想要使用spring ioc的全部功能可以导入下方依赖:
2.2 创建需要ioc管理的类org.springframework spring-context 5.3.11
public class User {
}
2.3 ioc配置文件
这里命名为:applicationContext.xml
2.4 测试方法
@Test
public void iocTest(){
//应用上下文 类路径下的xml
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
//根据Bean的名称获取类的对象
User user = context.getBean("user", User.class);
System.out.println(user);
}
3. DI — 依赖注入
在将对象交由ioc容器进行管理时,常常还需要为对象进行赋值,这就需要使用DI
DI全称为Dependency Injection,表示依赖注入。指的是在Spring创建对象的同时,为其属性赋值
首先给类中添加属性
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
private String username;
private String password;
private Map map;
private double[] c;
private UserInfo[] infos;
private List list;
private Properties props;
private UserInfo info;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserInfo {
private String name;
private String sex;
private int age;
private String hobby;
}
3.1 常见注入方式
常见的依赖注入有两种方式:set注入和构造方法注入
3.1.1 构造方法注入构造注入指的是通过构造放入为属性注入值。
注:按照构造方法出现参数的顺序书写,index从0开始
3.1.2 set方法注入(最常用)set方法注入,通过寻找property标签中的name属性值,首字母大写加上set,通过反射进行调用(setName())注意,并不是直接通过属性名进行赋值
4.1 注入各种类型的参数
(以set注入方式)
4.1.1 注入常用数据类型常用数据类型指8种基本数据类型以及对应的包装类、日期类型、字符串等。在注入时,可以使用value值直接写入“”之间。
注:Date类型需要使用默认的字符串格式yyyy/MM/dd
4.1.2 注入引用数据类型对于引用数据类型,spring 提供了两种注入值的方式。
一种是通过 ref 属性来引用 已经定义在容器中的bean 对象从而进行值的注入;
一种是通过 property 标签下嵌套bean 标签来创建一个 bean 对象进行值的注入。
4.1.3 注入数组类型
注入数组类型需要在property 标签下嵌套array标签
示例:
数组中为基本数据类型
20 30 40
注:为引用数据类型的数组时,参照4.1.2进行注入,可以使用bean标签嵌套,在使用引用ref标签时,略有不同,存在单独的ref标签。
示例:
综合示例:
4.1.4 注入List集合对象
注入集合对象与数组类似,需要使用list标签。
4.1.5 注入Set集合对象
示例:
4.1.6 注入Map集合对象李四 王五
注入map对象,需要使用到map标签和其下的entry标签(map底层就是一个entry的对象数组)
示例:
4.1.7 注入Properties对象
注入properties对象需要使用props标签
硕硕 男
注:properties中存放的键值都是String类型。



