IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Spring的创建和使用1.0 -> 正文阅读

[Java知识库]Spring的创建和使用1.0

目录

Spring项目的创建和使用的整个逻辑

创建Spring项目

创建一个Maven项目?

添加Spring的依赖到pom.xml文件中?

添加启动类?

存储Bean对象?

创建Bean?

将Bean注册到Spring容器中?

将对象从Spring框架中读出来?

创建Spring的上下文?

ApplicationContext和BeanFactory的区别

获取指定的Bean?

使用Bean?


Spring作为一个包含众多工具并且可以对这些工具进行管理的IoC容器,它有两个重要的作用,那就是存储对象和使用对象。要使用它的功能则必须将Spring创建出来,声明:本篇博客所讨论的Spring的创建和使用,是基于Maven来创建的,现在基本上没怎么用了,现在都是用SpringBoot直接创建Spring项目。虽说现在用的不多,但是对于帮助理解Spring还是很有帮助的,后面的博客还会讨论Spring的创建和使用2.0(也是基于Maven来创建的)。

PS:Spring框架的发展历程

Spring框架->Maven XML->Spring Boot->Spring Cloud

Spring项目的创建和使用的整个逻辑

1.创建Spring项目

2.将对象存储到Spring框架

3.将对象从Spring框架中读出来

创建Spring项目

创建Spring项目的过程和Servlet大致类似,主要包含以下三个步骤:

1.创建一个Maven项目;

2.添加Spring的依赖到pom.xml文件中;

3.添加启动类;

创建一个Maven项目?

这里的过程很简单,就不演示了,但是创建好有一点一定要注意:

检查setting里面的Maven有没有勾选User setting file(用户配置文件)、Local repository(本地存储库),像下面这样:

勾选用户配置文件的目的是为了:让Maven在下载依赖的时候,使用本地的配置文件,而且本地配置文件里面一定要配置国内源,也就是让Maven下载依赖从国内下载。默认配置文件里面的源都是国外的,下载会很慢而且很有可能会失败。?

勾选本地存储库就不用说了吧,Local repository是用来设置保存依赖(jar包)路径的,不勾选怎么保存啊。

还有一点,可能有的人他没有settings.xml文件,那就的去网上下载了,下载之后记得将镜像改为国内的。

添加Spring的依赖到pom.xml文件中?

将下面的依赖拷贝到pom.xml文件中,然后不要忘了刷新Maven

    <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的功能。这个就随便在java目录下面创建一个类就行了:

因为当前这个类是放在框架中的,而现在的框架就是Spring,因此当前这个类启动的时候,Spring框架也就启动了?。

存储Bean对象?

首先Bean对象就是java中的普通对象,这里因为是将对象存储在Spring中,所以将这些对象比喻成豆子,所以就称为了Bean对象。存储Bean对象,主要分为两步:创建Bean、将Bean注册到Spring容器中。

创建Bean?

将Bean注册到Spring容器中?

在创建好的项目中添加Spring配置文件到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"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>

然后再将User对象注册到Spring中就可以了,也就是在配置文件中加入一行代码:

        <beans>
                <bean id="user" class="model.UserBean"></bean>
        </beans>

上面这段代码的作用就是将对象存储到Spring框架中。而其中的id是对象的标识符,用于读取对象;class用来表示那个对象要保存在Spring中。?

将对象从Spring框架中读出来?

获取使用Bean对象分为三步:创建Spring的上下文、获取指定的Bean、使用Bean

创建Spring的上下文?

因为对象都交给Spring管理了,所以要想获取到对象,就必须先得到Spring的上下文。

在App文件中通过ApplicationContext来获取:

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
    }
}

上面?ClassPathXmlApplicationContext属于ApplicationContext的子类,拥有ApplicationContext的所有功能。

获取Spring的上下文还有另一种方式,通过BeanFactory来获取:

import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;

public class App {
    public static void main(String[] args) {
        BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("spring-config.xml"));
    }
}

ApplicationContext和BeanFactory效果是一样的。而BeanFactory是一个接口,ApplicationContext是BeanFactory的子类?。

ApplicationContext和BeanFactory的区别

  1. 它们两个的首先来源不同,前者是springframework.context包里面的一个类,后者是springframework.beans.factory包下面的一个接口。
  2. 从继承关系和功能上面来说:它们两是Spring容器的顶级接口,其中BeanFactory提供了基础的访问容器的功能,而ApplicationContext属于BeanFactory的子类,它不光拥有BeanFactory的功能,还支持国际化、资源访问、事件传播等功能。性能上,ApplicationContext是一次性加载并初始化所有的Bean对象,而BeanFactory是需要那个才去加载那个,因此更加轻量。

获取指定的Bean?

方式一,通过bean的id来获取:

public class App {
    public static void main(String[] args) {
        //1.得到Spring上下文对象
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
        //2.加载某个Bean
        UserBean user = (UserBean) context.getBean("user");
    }
}

这里的"user"就对应着注册对象中的id,因为context.getBean返回的类型是Object,所以要强转为UserBean类型。

该方式的缺点就是需要类型转换。?

方式二,通过类型获取:

public class App {
    public static void main(String[] args) {
        //1.得到Spring上下文对象
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
        //2.加载某个Bean
        UserBean user = context.getBean(UserBean.class);
    }
}

这种方式的优点,无需类型转换;

缺点:对于多个对象的同一种类型的Bean获取会报错;?

方式三,通过id+类型的方式来获取bean:

public class App {
    public static void main(String[] args) {
        //1.得到Spring上下文对象
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
        //2.加载某个Bean
        UserBean user = context.getBean("user",UserBean.class);
    }
}

?优点:无需类型转换,对于多个对象指向一个类的情况不会报错。

使用Bean?

import model.UserBean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;


public class App {
    public static void main(String[] args) {
        //1.得到Spring上下文对象
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
        //2.加载某个Bean
        UserBean user = context.getBean("user",UserBean.class);
        //3.使用Bean
        System.out.println(user.hello("李华"));
    }
}

总结Spring的创建和使用:

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-09-04 00:56:31  更:2022-09-04 01:00:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:26:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码