Spring的核心是一个完整的基于控制反转(IoC)的轻量级容器,提供了大量服务,充当了粘合剂和润滑剂的角色。
Sping 以IoC(inversion of control 控制反转)和AOP(aspect oriented programing 面向方面编程)为内核。
在Sping中,认为一切java类都是资源,而资源都是类的实例对象(Bean),管理这些Bean的就是IoC容器。
下载spring-framework-5.0.4,创建项目spring-1,配置bean,实例化。主要代码如下:
applicationContext.xml 中:
<!-- 配置一个bean,将指定类配置给Spring,让Spring来创建其对象的实例 -->
<bean id="helloSpring" class="com.ssm.HelloSpring">
<!-- 为属性赋值 -->
<property name="userName" value="张三"></property>
</bean>
main入口函数:
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
HelloSpring helloSpring = (HelloSpring)ctx.getBean("helloSpring");
helloSpring.show();
helloSpring类:
private String userName;
public void setUserName(String userName) {
this.userName = userName;
}
public void show() {
System.out.println(userName + ":welcome study Spring .");
}
执行入口程序,就会输入 张三:welcome study Spring .
创建和实例化java类的方法是通过Spring配置完成的,这就是IoC容器的实现机制。
依赖注入(DI)和控制反转是从两个角度描述的同一个概念,在spring框架中,对象的创建并不是由调用者创建,而是由spring容器来创建,这样控制权由程序代码转到了spring容器,控制权发生了反转,这就是Spring的控制反转。从spring容器的角度看,spring容器为调用者注入了它依赖的实例(给成员变量赋值),注入就是给成员变量赋值,依赖就是调用者依赖spring的注入才能得到实例。这就是spring的依赖注入。