Spring的创建和使用

目录

Spring 是⼀个包含了众多⼯具⽅法的 IoC 容器。那么它就具备以下功能:

1.将对象存储到容器中

2 从容器中将对象取出来

Spring的创建

使⽤ Maven ⽅式来创建⼀个 Spring 项⽬,总共分为三步:

  1. 创建一个普通的Maven项目
  2. 添加Spring框架支持(spring-context、spring-beans)
  3. 添加启动类

1.创建一个普通的Maven项目

然后点击下面创建

2.添加spring框架支持

在项目的pom.xml中,添加spring框架支持,xml的配置如下:

java 复制代码
  <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>5.2.3.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.3.RELEASE</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->
        <dependency>

上述添加的模块有spring-context :spring上下文 ,还有 spring-beans:管理对象模块

3.添加启动类

在创建好的项目中的java文件夹中创建一个启动类,包含main方法即可:

java 复制代码
public class Test {
    public static void main(String[] args) {
        
    }
}

存储Bean对象

存储Bean对象分为以下两步:

  1. 创建Bean
  2. 将创建的Bean注册到Spring容器当中

1. 创建Bean

Bean就是Java中的一个普通对象,实现代码如下:

java 复制代码
public class User {
    public String sayHi(String name){
        return  name+"你好!";
    }
}

2.将Bean注册到容器当中

在 resources 根⽬录下添加Spring配置文件spring-config.xml

Spring配置文件格式固定,所以找地方保存即可
配置文件gitee地址

java 复制代码
<?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>

<beans> 中添加如下配置,即可将User对象注册到Spring中去

java 复制代码
<bean id="user" class="User"></bean>

获取并使用Bean对象

获取并使用Bean对象需要三步:

  1. 得到Spring上下文
  2. 通过Spring上下文,获取某一个指定的Bean对象
  3. 使用Bean对象

1.得到Spring上下文

Spring 上下⽂对象可使⽤ ApplicationContext得到,实现代码如下:

java 复制代码
   //获取spring上下文,创建的时候需要配置 Spring 配置信息
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-config.xml");

也可以使用BeanFactory得到Spring上下文

java 复制代码
 BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("spring-config.xml"));

两者效果是一样的,ApplicationContext是BeanFactory的子类

常见面试题

ApplicationContext与BeanFactory

1.继承关系和功能⽅⾯来说:Spring 容器有两个顶级的接⼝:BeanFactory 和ApplicationContext。其中 BeanFactory 提供了基础的访问容器的能⼒,⽽ ApplicationContext属于 BeanFactory 的⼦类,它除了继承了 BeanFactory 的所有功能之外,它还拥有独特的特性,还添加了对国际化⽀持、资源访问⽀持、以及事件传播等⽅⾯的⽀持

2.从性能⽅⾯来说:ApplicationContext 是⼀次性加载并初始化所有的 Bean 对象,⽽BeanFactory 是需要那个才去加载那个,因此更加轻量。

2. 获取指定Bean对象

java 复制代码
 //获取指定的Bean对象,使用名称获取
        User user = (User) applicationContext.getBean("user");
  //获取指定的Bean对象类型进行获取
        User user = (User) applicationContext.getBean(User.class);
  //获取指定的Bean对象名称+类型进行获取
        User user = (User) applicationContext.getBean("user",User.class);      

注意

当有⼀个类型被重复注册到 spring-config.xml 中时,只能使⽤根据名称获取。

3. 使用Bean对象

java 复制代码
public class Test {
    public static void main(String[] args) {
        //获取spring上下文,创建的时候需要配置 Spring 配置信息
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-config.xml");
        //BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("spring-config.xml"));
    //获取指定的Bean对象名称+类型进行获取
        User user = (User) applicationContext.getBean("user",User.class);
       //调用指定对象相应方法
        System.out.println(user.sayHi("朱星星"));

    }
}

运行main方法

总结

  1. 操作容器之前,需要先得到容器。
  2. 存对象
  • 创建 Bean
  • 将 Bean 注册(配置)到 spring-confing.xml 中
  1. 取对象
  • 得到 Spring 上下⽂,并读取到 Spring 的配置⽂件
  • 获取某⼀个 Bean 对象
  • 使用Bean对象
相关推荐
魔道不误砍柴功2 小时前
Java 中如何巧妙应用 Function 让方法复用性更强
java·开发语言·python
NiNg_1_2342 小时前
SpringBoot整合SpringSecurity实现密码加密解密、登录认证退出功能
java·spring boot·后端
Nu11PointerException2 小时前
JAVA笔记 | ResponseBodyEmitter等异步流式接口快速学习
笔记·学习
闲晨2 小时前
C++ 继承:代码传承的魔法棒,开启奇幻编程之旅
java·c语言·开发语言·c++·经验分享
种树人202408192 小时前
如何在 Spring Boot 中启用定时任务
spring boot
Chrikk3 小时前
Go-性能调优实战案例
开发语言·后端·golang
幼儿园老大*3 小时前
Go的环境搭建以及GoLand安装教程
开发语言·经验分享·后端·golang·go
canyuemanyue3 小时前
go语言连续监控事件并回调处理
开发语言·后端·golang
杜杜的man4 小时前
【go从零单排】go语言中的指针
开发语言·后端·golang
测开小菜鸟4 小时前
使用python向钉钉群聊发送消息
java·python·钉钉