spring Ioc(控制反转)
程序员文章站
2022-07-12 14:02:05
...
简述: spring的核心有两部分:ioc和aop
(1)ioc:控制反转,之前调用一个类中的不是静态的方法,创建类的对象 new 类,再调用。现在使用spring的ioc之后,不需要自己手动new创建对象,交给spring进行管理。
(2)aop:面向切面编程,在基本的功能之上,可以添加一个额外功能,不添加额外功能,基本功能也可以运行。Aop底层原理动态代理
一.Ioc: 把对象的创建交个spring管理,不需要手动(new()个对象)创建对象
1.Spring的bean管理(xml配置文件):
什么是Bean管理?
Bean管理:
1.创建对象的过程(既new()过程),
2.创建对象的过程中设置属性值
2.使用spring创建对象的三种的三种方式(既bean管理)
1).使用无参数的构造方法创建
java类:
public class TestIOCDemo{
}
创建TestIOCDemo类的对象(在xml文件的配置)
<bean id="demo" class="cn.ioc.TestIOCDemo">
2).使用静态工厂创建
3).使用实例工厂创建
3.依赖注入的三种方式:
1)使用setter注入
public class Role{
private Long id;
private String roleName;//要在配置文件(xml注入值)
public void setRoleName(String roleName){
this.roleName = roleName;
}
}
配置文件(xml):
<bean id="roleId" class="Role类的路径">
//name的值和类里的值必须是一致的
<property name="roleName" value="高级工程师">
</bean>
最后是Role类里面的roleName就是 高级工程师
2).使用有参数的构造方法注入
3).使用接口注入
4.Spring的bean管理(注解方式)
Ioc底层原理: 配置文件+工厂+反射
1.创建配置文件:
<bean id="testDao" class="com.test.TestDao"></bean>
2.工厂:
解析配置文件(dom4j方式解析配置文件), 得到testDao和testDao的全路径
3.反射:
得到全路径后,使用反射得到对象Class: Class clazz = Class.forName("testDao的全路径");
在获取到类的实例:clazz.newInstance();
二.数组,集合注入:
1.数组的注入;
//java 代码
public class ArrayDemo {
//注入数组属性
private String[] arr;
public void setArr(String[] arr) {
this.arr = arr;
}
public void arrayDemo(){
System.out.println("=="+ Arrays.toString(arr));
}
//配置文件代码
<!--数组属性的注入-->
<bean id="arrayDemo" class="com.spring.ioc.ArrayDemo">
<property name="arr">
<list>
<value>小南国</value>
<value>小呆瓜</value>
<value>小笨蛋</value>
</list>
</property>
</bean>
2.list的注入;
3.set的注入;
4.map的注入;
上一篇: 小程序自定义头部组件
下一篇: Maya Phthon获取世界坐标系
推荐阅读
-
轻松理解Java面试和开发中的IoC(控制反转)
-
spring mvc DispatcherServlet之前端控制器架构详解
-
简单了解Spring中的事务控制
-
spring boot 使用Aop通知打印控制器请求报文和返回报文问题
-
使用Spring安全表达式控制系统功能访问权限
-
Spring源码剖析2:Spring IOC容器的加载过程
-
Spring源码剖析1:初探Spring IOC核心流程
-
利用递归,反射,注解等,手写Spring Ioc和Di 底层(分分钟喷倒面试官)了解一下
-
.NET CORE与Spring Boot编写控制台程序应有的优雅姿势
-
Spring框架学习-Spring和IOC概述