Spring:Spring是一个包含众多工具方法的IoC容器;
Spring的核心功能:
- 将对象(俗称Bean)存储到Sping容器中
- 从容器中取出对象
目录
一,创建Spring项目
1,创建一个Maven项目
2,添加Spring框架(以spring-context为例)
3,创建启动类
二,操作Bean对象
1,存储Bean对象
创建Bean对象
添加配置文件(spring-config.xml)
Bean对象的注入
2,获取并使用Bean对象
使用ApplicationContext操作
使用BeanFactory操作
常见面试题(ApplicationContext 和 BeanFactory的区别):
一,创建Spring项目
使用Maven方式创建一个Spring项目,创建Spring项目和Servlet类似,总共分成一下三步:
- 创建一个普通的Maven;
- 添加Spring框架支持(spring-context、spring-beans);
- 添加启动类.
1,创建一个Maven项目
2,添加Spring框架(以spring-context为例)
添加Spring依赖前需要配置Maven国内源,详情博客:Maven配置国内源以及jar下载失败处理详解_徐憨憨!的博客-CSDN博客
使用Maven仓库(https://mvnrepository.com/)查找Spring相关框架并添加;
3,创建启动类
在创建好的项目java文件夹下创建一个启动类,需要包含main方法;
二,操作Bean对象
上述操作已经创建了一个Maven项目了,通过这个Maven项目可以进行对Bean对象的存储和取出操作!
1,存储Bean对象
存储Bean对象分为两步:
- 存储Bean之前,先得有Bean才行,因此需要先创建一个Bean;
- 将创建的Bean注册到Spring容器中.
创建Bean对象
Bean对象其实就是一个普通的Java对象,现在我们创建一个Student对象,具体代码如下:
public class Student {
//为了简化代码 这里使用就地初始化的方式
public int id = 1;
public String name = "张三";
public void print() {
System.out.println("id: " + id + " name: " + name);
}
}
添加配置文件(spring-config.xml)
Bean对象的注册依赖配置文件spring-config.xml,需要将此文件放到resources的根目录下:
配置文件的内容不需要背诵,事先存储一份,用的时候直接复制即可,配置文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:content="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
</beans>
Bean对象的注入
这里使用beans标签进行注入,后面随着学习的深入,将会使用更加简单的方法进行注册;
2,获取并使用Bean对象
- 得到 Spring 上下文对象,因为对象都交给 Spring 管理了,所以获取对象要从 Spring 中获取,那么就得先得到 Spring 的上下文;
- 通过 Spring 上下文,获取某⼀个指定的 Bean 对象;
- 使用 Bean 对象.
使用ApplicationContext操作
public class App {
public static void main(String[] args) {
//1.获取 Spring 上下文对象
ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
//2.获取 Bean 对象
//Student student = (Student) context.getBean("student");//使用名称的方式进行获取
//Student student = context.getBean(Student.class);//使用类的方式进行获取
Student student = context.getBean("student",Student.class);//使用名称+类的方式进行获取(该方式更推荐)
//3.使用 Bean 对象
student.print();
}
}
注意:
获取spring上下文对象时需要传入spring-config配置文件用来加载Bean对象;
getBean方法有很多重载方法,不同方法所需传入的参数不同;
使用名称的方式进行获取时,返回的类型是Object类型,需要进行强转;
传入的名称要和bean标签中设置的id匹配.
使用BeanFactory操作
public class App {
public static void main(String[] args) {
//1.获取 Spring 上下文对象
BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("spring-config.xml"));
//2.获取 Bean 对象(这里也可以使用多种方式获取 Bean 对象)
Student student = beanFactory.getBean("student", Student.class);
//3.使用 Bean 对象
student.print();
}
}
常见面试题(ApplicationContext 和 BeanFactory的区别):
继承关系和功能方面来说:Spring 容器有两个顶级的接口:BeanFactory 和 ApplicationContext。其中 BeanFactory 提供了基础的访问容器的能力,而 ApplicationContext 属于 BeanFactory 的⼦类,它除了继承了 BeanFactory 的所有功能之外,它还拥有独特的特性,还添加了对国际化支持、资源访问支持、以及事件传播等方面的⽀持。从性能方面来说:ApplicationContext 是⼀次性加载并初始化所有的 Bean 对象,而BeanFactory 是需要那个才去加载那个,因此更加轻量。