Spring —— Spring 的创建与使用
创始人
2025-05-30 05:57:17
JavaEE传送门

JavaEE

Servlet —— Servlet API

Spring —— 初学 Spring, 理解控制反转


目录

  • Spring 创建与使用
    • 创建 Spring 项目
    • 存储 Bean 对象
    • 从 Spring 中读取 Bean 对象
      • 取出 Bean 对象的方法
    • 总结


Spring 创建与使用

创建 Spring 项目

我们使用 Maven 方式创建一个 Spring 项目

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

创建 Maven 项目

添加 Spring 框架支持

pom.xml 中添加 Spring 框架支持

org.springframeworkspring-context5.2.3.RELEASEorg.springframeworkspring-beans5.2.3.RELEASE

粘贴完之后, 记得刷新.

如果刷新之后, 还是导入失败, 我们需要设置国内源:

搜索 maven 按照如图设置

按照路径找到 setting.xml 文件

在里面找到 mirrors 标签, 在其中填入如下代码

alimavenaliyun mavenhttp://maven.aliyun.com/nexus/content/groups/public/central        

如果继续出错, 删除本地 maven 仓库的 jar 包, 重新下载

添加启动类

java 文件夹下创建一个启动类, 包含 main 方法


存储 Bean 对象

存储 Bean 分为两步:

  1. 存储 Bean 之前, 需要先创建 Bean
  2. 将创建的 Bean 注册到 Spring 容器中

创建 Bean

如图创建一个普通对象

将 Bean 注册到容器

添加 Spring 配置文件, spring-config.xml, 将文件放到 resources 的根目录下

Spring 配置⽂件的固定格式为以下内容




User 对象注册到 Spring 中, 在 中添加如下配置:



从 Spring 中读取 Bean 对象

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

# 使用 ApplocationContent

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.io.ClassPathResource;public class App {public static void main(String[] args) {// 得到 Spring 对象, xml名字一定要和 resources 下 xml名字一一对应ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-config.xml");// 从 Spring 中取出 Bean 对象User user = (User) applicationContext.getBean("user");// 使用 Bean (可选)System.out.println(user.sayHi());// 根据名称获取 Bean}
}

运行结果展示

# 使用 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"));User user = (User) beanFactory.getBean("user");System.out.println(user.sayHi());}
}

# AppliactionContext VS BeanFactory

相同点:

  1. 都可以得到 Spring 上下文对象
  2. 都是来自 Spring 的顶级接口

不同点:

  1. 继承关系: ApplicationContext 属于 BeanFactory 的子类: BeanFactory 只有最基础访问 Bean 的能力, 而 ApplicationContext 除了拥有 BeanFactory 功能之外, 还包含了更多的功能, 如: 国际化支持, 资源访问, 事件传播等.
  2. 性能: ApplicationContext 加载方式是将 Bean 对象一次性加载, 所以在后面访问 Bean 对象时会很快; BeanFactory 需要某个 Bean 时, 采用加载 Bean 对象, 所以它在执行 Bean 获取时, 比较慢

取出 Bean 对象的方法

User user = (User) applicationContext.getBean("user");// 根据 Bean 名称(标识) 来得到 Bean 对象
User user1 = applicationContext.getBean(User.class);// 根据 Bean 类型来得到 Bean 对象
User user2 = applicationContext.getBean("user", User.class);// 根据 Bean 名称 + Bean 类型来得到 Bean 对象

# 注意事项 #

  1. 当根据 Bean 名称来获取 Bean 的时候, getBean() 时, 当 Bean 不存在, 获取为 null, 强转类型时就会出错
  2. 当根据 Bean 类型来获取 Bean 的时候, 如果 Spring 中存在相同对象的时候, 使用该方法获取 Bean 对象会报错

总结


🌷(( ◞•̀д•́)◞⚔◟(•̀д•́◟ ))🌷

以上就是今天要讲的内容了,希望对大家有所帮助,如果有问题欢迎评论指出,会积极改正!!

相关内容

热门资讯

长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
cad打印线条粗细设置 cad... 004-线型(下)打印样式设置和线型文件使用一、线宽设置方法制图规范里边的线宽要求,我们已经定义好,...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
阿西吧是什么意思 阿西吧相当于... 即使你没有受到过任何外语培训,你也懂四国语言。汉语:你好英语:Shit韩语:阿西吧(아,씨발! )日...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...