欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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管理(注解方式)
spring Ioc(控制反转)

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的注入;
spring Ioc(控制反转)

3.set的注入;
spring Ioc(控制反转)

4.map的注入;
spring Ioc(控制反转)