中国商标官网入口,百度热搜seo,医院如何做网站策划,龙海网站建设哪家好简介 **控制反转**#xff08;Inversion of Control#xff0c;缩写为**IoC**#xff09;#xff0c;是[面向对象编程]中的一种设计原则#xff0c;可以用来减低计算机[代码]之间的[耦合度]。其中最常见的方式叫做[依赖注入]Dependency Injection#xff0c;简称DI#…简介 **控制反转**Inversion of Control缩写为**IoC**是[面向对象编程]中的一种设计原则可以用来减低计算机[代码]之间的[耦合度]。其中最常见的方式叫做[依赖注入]Dependency Injection简称DI还有一种方式叫“依赖查找”Dependency Lookup。通过控制反转对象在被创建的时候由一个调控系统内所有对象的外界实体将其所依赖的对象的引用传递给它。也可以说依赖被注入到对象中。 控制反转IOC: 把对象创建和对象之间的调用过程,交给spring进行管理 使用IOC目的: 为了降低耦合度 上面的入门案例 就是IOC实现 底层原理 使用xml 解析,工厂模式,反射 IOC接口 (BeanFactory) IOC思想基于IOC容器完成,IOC容器底层就是工厂对象 Spring提供IOC容器实现两种方式 (2个接口) (1)BeanFactory: IOC 容器基本实现,是spring内部的使用接口,不提供开发人员进行使用 加载配置文件时,不会创建对象,在获取(使用)对象时,才去创建对象 (2)ApplicationContext:ApplicationContext是BeanFactory接口的子接口,提供更多更强大的功能,一般由开发人员进行使用, 加载配置文件时候就会把 配置文件中配置的对象进行创建 IOC操作Bean管理 1. 什么是bean管理 bean管理指的是两个操作: a. spring 创建对象 b. spring 注入属性 2. Bean管理操作有2种方式 a 基于xml方式 b.基于注解方式 基于xml方式创建对象 (1)在spring配置文件种,使用bean标签,标签里面添加对应的属性,就可以实现对象创建 (2)bean标签常用属性 id属性: 唯一标识 class属性:类全路径 (包类路径) (3)创建对象时候,默认执行无参构造方法,完成对象的创建 !--配置User对象创建-- bean iduser classcom.ly.User 基于xml方式注入属性 (1)DI: 依赖注入, 就是注入属性 第一种子 注入方式: 使用set方法进行注入 (a) 创建类,定义属性和setter package com.ly;public class Book {//创建属性private String bName;private String author;public void setbName(String bName) {this.bName bName;}public void setAuthor(String author) {this.author author;}public void print(){System.out.println(bName,author);}} (b) 在spring配置文件中 ,配置对象及属性 !--使用set 方法注入属性--bean idbook classcom.ly.Book!--使用property完成属性注入name:类里面属性名称value:向属性注入的值--property nameauthor value王丽丽/propertyproperty namebName value李四/property/bean (c)测试 Testpublic void tesBook(){//1. 加载spring配置文件ApplicationContext context new ClassPathXmlApplicationContext(demo1.xml);//2.获取 配置创建的对象Book book context.getBean(book, Book.class);book.print();} 控制台输出:李四,王丽丽 有参构造方法进行注入 (a) 创建类,定义属性,生成带参构造方法 package com.ly;// 使用 有参构造注入public class Order {private String oName;private String address;public Order(String oName, String address) {this.oName oName;this.address address;}//为了测试 结果 添加的public void print(){System.out.println(oName::address);}} (b)在spring配置文件中 进行配置 !--使用 带参构造方式注入--bean idorder classcom.ly.Orderconstructor-arg nameaddress value天津市/constructor-argconstructor-arg nameoName value玩具车/constructor-arg/bean (c) 测试 Testpublic void tesOrder(){//1. 加载spring配置文件ApplicationContext context new ClassPathXmlApplicationContext(demo1.xml);//2.获取 配置创建的对象Order order context.getBean(order, Order.class);order.print();} 控制台输出 :玩具车::天津市 p命名空间注入 (1)使用p命名空间注入, 可以简化基于xml配置方式 a. 添加p命名空间 xmlns:phttp://www.springframework.org/schema/p beans xmlnshttp://www.springframework.org/schema/beansxmlns:phttp://www.springframework.org/schema/p xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd b.进行属性注入,在bean标签里面进行操作 bean idbook classcom.ly.Book p:author李四 p:bNamehtml/bean 基于xml注入其他类型属性 1.字面量(固定值) a. null值 ---null/ 标签 bean idbook classcom.ly.Bookproperty nameauthor value王丽丽/propertyproperty namebName value李四/property!--address 值为 null 空值--property nameaddressnull//property/bean b.属性值包含特殊符号 使用转义 property nameaddress valuelt;南京gt;/property 或者cdata property nameaddressvalue![CDATA[南京]]/value/property 控制台输出李四,王丽丽,南京