- 博主简介:想进大厂的打工人
- 博主主页:@xyk:
- 所属专栏: JavaEE进阶
目录
文章目录
一、创建Spring项目
1.1 创建Maven项目
2.2 配置国内源
二、Bean对象的存储和读取
2.1 添加spring配置文件
2.2 创建Bean对象
2.3 读取Bean对象
2.3.1 得到spring上下文对象
总结:spring框架使用
一、创建Spring项目
1.1 创建Maven项目
Spring项目的基础就是Maven项目:一路next下去
finish之后,出现这样的界面:
2.2 配置国内源
由于国外源不稳定,可能让下面第二步引入 Spring 依赖会失败,所以这里先介绍如何一下配置国内镜像源。
进入Settings,搜索Maven
注意我标红的位置,主要是下方的文件要和我一致(可以不在C盘)
settings.xml文件
<settings xmlns="http://maven.apache.org/SETTINGS/1.1.0" xmlns:xsi="htt
p://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.
apache.org/xsd/settings-1.1.0.xsd">
<localRepository>C:\Users\86180\.m2\repository</localRepository>
<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
</settings>
如果你是在引入相关依赖失败后进行的国内源配置,就要去本地管理jar
包的目录将jar
包都进行删除,然后重新刷新下载依赖即可。
重新进行下载
3.添加spring依赖
在pom.xml中添加依赖,刷新
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.2.3.RELEASE</version>
</dependency>
</dependencies>
添加的框架有 spring-context:spring 上下文,还有 spring-beans:管理对象的模块
4.创建启动类
在java目录创建类,写代码即可
二、Bean对象的存储和读取
2.1 添加spring配置文件
右键resources
目录,新建一个spring-config.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">
</beans>
2.2 创建Bean对象
public class student {
public void sayHi(String name){
System.out.println("hello!" + name);
}
}
然后将Bean
通过配置文件,注入到spring
中,即在spring
配置文件中通过以下语句注入。
id:将对象存储到容器的名字(后续取对象会用)
class:要存储对象的完整路径
<bean id="student" class="demo.student"></bean>
2.3 读取Bean对象
获取并使⽤ Bean 对象,分为以下 3 步:
1. 得到 Spring 上下⽂对象,因为对象都交给 Spring 管理了,所以获取对象要从 Spring 中获取,那么就得先得到 Spring 的上下⽂。
2. 通过 Spring 上下⽂,获取某⼀个指定的 Bean 对象。
3. 使⽤ Bean 对象。
2.3.1 得到spring上下文对象
1.可使用ApplicationContext接口
public class App {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
// BeanFactory factory = new XmlBeanFactory(new ClassPathResource("spring-config.xml"));
student student = context.getBean("student", demo.student.class);
student.sayHi("张三");
}
}
实现类 | 描述 |
---|---|
ClassPathXmlApplicationContext(常用) | 加载类路径下的配置文件,要求配置文件必须在类路径下 |
FileSystemXmlApplicationContext | 可以加载磁盘任意路径下的配置文件(必须要有访问权限) |
2.还可以使用 BeanFactory工厂来获取Bean
public class App {
public static void main(String[] args) {
// ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
BeanFactory factory = new XmlBeanFactory(new ClassPathResource("spring-config.xml"));
student student = factory.getBean("student", demo.student.class);
student.sayHi("张三");
}
}
但实际上并不推荐使用这种方式,算是过时代的方式了,因为旧时期需要考虑内存占用的问题,而现在内存资源没有这样的问题了。
上面两种效果都是一样的,那么ApplicationContext
与 BeanFactory
有什么区别?
相同点:
- 都可以得到spring上下文对象
- 都是来自spring顶级接口
不同点:
- 继承关系和功能⽅⾯来说:其中 BeanFactory 提供了基础的访问容器的能力;而 ApplicationContext属于 BeanFactory 的⼦类,它除了继承了 BeanFactory 的所有功能之外,它还拥有独特的特性,还添加了对国际化⽀持、资源访问⽀持、以及事件传播等⽅⾯的⽀持。
- 从性能⽅⾯来说:ApplicationContext 是⼀次性加载并初始化所有的 Bean 对象,属于饿汉方式;而BeanFactory 是需要那个才去加载那个,属于懒汉方式
验证ApplicationContext 加载机制:
可见,在spring框架一启动,会将所有的Bean对象创建出来,属于饿汉方式
验证BeanFactory加载机制:
可见BeanFactory是懒加载机制~~