本文作者:bang

spring培训【 spring官网在哪里学】

bang 2021-12-02 141
spring培训【 spring官网在哪里学】摘要: ...

控制反转-IOC

步骤:

导入相关jar包 lib

编写Spring配置文件(名称可自定义), beans.xml

定义类:

package com.xj.bean;public class Hello {    private String name;    public Hello() {
        System.out.println("Hello对象被创建");
    }    public void setName(String name) {        this.name = name;
    }    public void show() {
        System.out.println("我亲爱的," + name);
    }
}


编写Spring配置文件(名称可自定义), beans.xml

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!--bean就是java对象,由spring容器来创建和管理-->
    <bean name="hello" class="com.xj.bean.Hello">
    <property name="name" value="中国"/>
    </bean></beans>


测试代码:

package com.xj.test;import com.xj.bean.Hello;import javafx.application.Application;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class Test {    public static void main(String[] args) {        //解析beans.xml文件,生产相应的bean对象
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        Hello hello = (Hello)context.getBean("hello");
        hello.show();
    }
}

output:

十一月 07, 2019 10:02:34 下午 org.springframework.context.support.AbstractApplicationContext prepareRefresh信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@244038d0: startup date [Thu Nov 07 22:02:34 CST 2019]; root of context hierarchy十一月 07, 2019 10:02:34 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions信息: Loading XML bean definitions from class path resource [beans.xml]Hello对象被创建我亲爱的,中国Process finished with exit code 0


思考:

1、Hello对象是谁创建的?

可以使用hello.show();调用它的方法,说明Hello对象被创建。

Hello对象是由Spring容器创建的

2、hello对象的属性是怎么设置的(即name怎么得到“中国”的)?

Hello对象的属性是由Spring容器设置的,这个过程就叫控制反转

控制的内容:指谁来控制对象的创建,传统的应用程序对象的创建是由程序本身,使用Spring之后,由Spring来创建对象。

反转:(创建对象的)权限的转移

正转:指程序来创建对象;

反转:指程序本身不去创建对象,而变为被动的去接收由Spring容器创建的对象。

总结:以前对象由程序本身(service实现类)来创建,使用Spring后,程序变为被动接收Spring创建好的对象。

控制反转:--依赖注入(dependency injection)

依赖注入(dependency injection)

比如:Hello类,依赖name,name的值是通过容器来设置的。

反过来,“中国”这个value是通过

public void setName(String name){

this.name = name;

}


推荐阅读:

java开发技术之SpringMVC运行流程图解

java开发之常用的Javascript对象方法整理分享

Java开发之SpringMVC中JSR303数据校验

java开发juc并发之AQS入门


觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

阅读
分享