目录
Spring框架初识
Spring IoC
IoC(控制反转)
DI(依赖注入)
Spring项目的创建
创建一个maven项目
配置XML文件
添加启动类
简单了解Bean对象的存储与获取
创建一个Spring IoC容器
注册Bean对象
获取并使用Bean对象
Spring框架初识
通常所说的Spring是指Spring Framework(Spring框架),它是一个开源的框架,目前企业中开发JAVA项目,Spring框架几乎是标配,这个框架中包含了很多组件:Spring容器/IOC容器、SpringMVC、SpringAOP。Spring可以说是包含了众多工具方法的IOC容器
Spring IoC
上面说到是一个IoC容器,其具备两个最基础的功能:将对象存储到容器中、从容器中取出对象。因此,在学习Spring时,主要就是学会如何将对象存储到Spring中,再从Spring中获取对象的过程。
对于Spring IoC容器来说,是管理Bean对象的容器.单纯从存放数据这个角度来看,Spring IoC容器与普通的集合框架一样,但使用Spring容器存放对象,对象不需要程序员手动去new,需要进行管理的对象,直接放入到容器中。
· Bean对象即普通的java实例对象
IoC(控制反转)
IoC即控制反转,是面向对象编程中的一种设计原则。对于Spring容器来说,IoC将实例化对象以及组织间的依赖关系,都转交给IoC容器来进行管理。控制权由程序员自己控制,转变为IoC容器控制,控制权发生反转,因此称为IoC容器。
使用IoC容器,按照框架约定的写法,就可以实现,框架统一管理Bean'对象的生命周期、Bean对象之间的依赖关系。
DI(依赖注入)
DI,即依赖注入,也就是由IoC容器在运行时动态的将某种依赖关系注入到对象之中。
依赖注入和控制反转其实是从不同的角度描述同一件事,就是指通过引入IoC容器,利用依赖关系注入的方式,实现对象之间的解耦.也可以说IoC是是思想,而DI是其具体的实现。
Spring项目的创建
创建一个maven项目
配置XML文件
关于pom.xml文件的配置可以直接从我的gitee中复制:Spirng项目pom.xml文件的配置
添加启动类
package org.example;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
简单了解Bean对象的存储与获取
创建一个Spring IoC容器
package org.example;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class APP {
public static void main(String[] args) {
//ApplicationContext是Spring容器的顶级接口
//AnnotationConfigApplicationContext其中的一个实现类,作用是:
//(1)扫描指定的包路径下,使用了Spring框架注解的类
//(2)扫描到后,注册这些类到容器中=>框架帮我们new对象,及注入对象的依赖关系(属性赋值)
ApplicationContext context = new AnnotationConfigApplicationContext("org.example");
}
}
注册Bean对象
使用类注解的方式来注册Bean对象
package org.example.model;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Repository;
import org.springframework.stereotype.Service;
//以下四个注解,都是类注解,用于注册Bean对象
//注册的方式,默认是Bean ID(名称),是类名首字母小写
@Controller
//@Service
//@Repository
//@Component
public class Bean {
public void sayHello() {
System.out.println("hello");
}
}
获取并使用Bean对象
获取Bean对象有两种方式
①通过Bean的类型来获取
// (1)通过bean的类型来获取
Bean b1_1 = context.getBean(Bean.class);
System.out.println(b1_1);
②通过Bean的id(名称)来获取
//(2)通过bean的id(也叫bean的名称)
Bean b1_2 = (Bean)context.getBean("bean");//这个方法要强制转换一下
System.out.println(b1_2);
使用Bean
上面已经获取到了bean对象,之后就可以直接使用
//使用bean
b1_1.sayHello();
b1_2.sayHello();
完整代码
package org.example;
import org.example.model.Bean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class APP {
public static void main(String[] args) {
//ApplicationContext是Spring容器的顶级接口
//AnnotationConfigApplicationContext其中的一个实现类,作用是:
//(1)扫描指定的包路径下,使用了Spring框架注解的类
//(2)扫描到后,注册这些类到容器中=>框架帮我们new对象,及注入对象的依赖关系(属性赋值)
ApplicationContext context = new AnnotationConfigApplicationContext("org.example");
//获取Bean对象有两种方式:
// (1)通过bean的类型来获取
Bean b1_1 = context.getBean(Bean.class);
//(2)通过bean的id(也叫bean的名称)
Bean b1_2 = (Bean)context.getBean("bean");//这个方法要强制转换一下
//使用bean
b1_1.sayHello();
b1_2.sayHello();
}
}