Java开发之Spring框架入门学习
项目目录
控制反转-IOC
步骤:
导入相关jar包 lib
编写Spring配置文java培训件(名称可自定义), 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;
}
赞 (0)