Spring的创建与使用

简介: 在了解了Spring的核心与设计思想以后,下边就是Spring的具体使用,这篇文章主要介绍Spring项目的创建和Bean对象的存放与取出。

1.创建第一个Spring项目


使用Maven的方式来创建一个Spring项目,创建Spring项目和Servlet类似,总共分为三步:


a)先创建一个maven项目

b)添加spring框架支持(spring-context、spring-beans)

c)创建一个启动类并添加main


1.1 创建一个maven项目

微信图片_20230111194247.png

微信图片_20230111194243.png


1.2 添加Spring框架支持


在项目的pom.xml中添加Spring的框架支持,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>


刷新等待加载完成:


微信图片_20230111194238.png

1.3 创建启动类和main


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


public class App {
    public static void main(String[] args) {
         System.out.println("hello,Spring!");
    }
}


能够正常运行说明创建Spring项目流程完成。


微信图片_20230111194234.png


2.Bean对象的存储与读取


2.1 将Bean对象存储到容器(Spring)中


完成该流程需要三步(或两步,第一次添加bean对象需要三步)


2.1.1 添加Spring配置文件(第一次的时候添加)


将创建好的项目中添加Spring配置文件spring-config.xml,将此文件放到resources的根目录下,如下图所示:


微信图片_20230111194230.png

配置文件的内容如下,无需记忆,再次使用时复制粘贴即可:


<?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.1.2 创建bean对象


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


package com.beans;
/**
 * 普通的bean对象
 */
public class User {
   public void sayHello(String name) {
       System.out.println("你好:"+name);
   } 
}


2.1.3 将bean通过配置文件注册到spring中


微信图片_20230111194225.png

其中id与class的关系就相当于Map中的Key-Value键值对关系,bean id通常使用与类名对应的小驼峰命名。


2.2 从Spring中将bean对象读取出来


2.2.1 得到Spring的上下文


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");
    }
}


注意配置文件的名字一定要对应。


2.2.2 根据上下文对象的getBean方法获取bean


微信图片_20230111194221.png

注意根据bean name获取对象时,一定要保持两者一致。


getBean的其他用法:


1.根据bean type获取bean


User user=context.getBean(User.class);

这种写法是最简单的,但容易出问题。当用一个类型注入到spring中多次的时候就会报错,程序猿可根据实际情况决定是否要使用。


2.根据bean name和类型获取bean


User user=context.getBean("user",User.class);

2.2.3 使用bean对象


就像使用普通的Java对象一样来使用:


user.sayHello("张三");

总体代码概览:


微信图片_20230111194214.png


3.经典面试题:ApplicationContext和BeanFactory的区别


从Spring中将bean对象读取出来不仅仅有以上一种,通过ApplicationContext上下文获取对象的方法,还可以通过BeanFactory的方法来获取:


微信图片_20230111194206.png

那么上边这两种方法都可以从Spring容器中获取到bean对象,这两个方法有什么区别呢?


相同点:

都可以实现从容器中获取bean,都提供了getBean的方法。


不同点:


  • ApplicationContext 属于BeanFactory的子类。BeanFactory只提供了基础访问Bean的方法,而ApplicationContext除了拥有BeanFactory的所有功能以外,还提供了更多的方法实现,比如对国际化的支持、资源访问的支持,已经事件和传播等方面的支持。
  • 从性能方面来说,两者是不同的,BeanFactory是按需加载Bean的(相当于懒加载),而ApplicationContext是以饿汉方式来加载Bean对象的,在类加载阶段会将所有的Bean都加载起来,以备后续使用。


如果资源允许的条件下使用ApplicationContext,能够再后续使用Bean对象时更快。


4.总结

微信图片_20230111194158.png


相关文章
|
5月前
|
缓存 Java 数据库连接
Spring c3p0配置详解
【7月更文挑战第13天】
138 1
|
7月前
|
XML Java Maven
Spring的创建
Spring的创建
59 2
|
7月前
|
Java 程序员 Maven
Spring(Spring/Springboot 的创建) 基础
Spring(Spring/Springboot 的创建) 基础
|
7月前
|
Java Maven Spring
创建一个spring boot的3种方式
创建一个spring boot的3种方式
58 6
|
7月前
|
存储 Java Maven
【Spring】——Spring的创建与使用(二)
【Spring】——Spring的创建与使用
76 0
【Spring】——Spring的创建与使用(二)
|
7月前
|
XML Java Maven
【Spring】——Spring的创建与使用(一)
【Spring】——Spring的创建与使用
64 0
【Spring】——Spring的创建与使用(一)
|
存储 安全 Java
《Spring安全配置》
《Spring安全配置》
74 1
|
IDE Java Maven
手动创建Spring Boot 2.x项目
手动创建Spring Boot 2.x项目
293 0
手动创建Spring Boot 2.x项目
|
存储 Java Maven
Spring 创建和使用
spring-core的创建与使用
|
存储 XML Java