JavaEE4-Spring使用

news/2023/6/9 18:36:33

目录

1.存储Bean对象到Spring容器中

1.1.创建Bean

1.2.将Bean注册到Spring容器中

1.2.1.第一次存储Bean(可选,如果是第二次及以后,此步骤忽略)

1.2.2.添加Bean标签

2.从Spring容器中获取并使用Bean对象

2.1.创建Spring上下文

2.1.1.Spring上下文对象可使用ApplicationContext

2.1.2.Spring上下文对象也可使用BeanFactory

2.1.3.(常见面试题)ApplicationContext VS BeanFactory

2.2.从Spring上下文对象中获取指定的Bean对象

2.2.1.根据id获取bean

2.2.2.根据类型获取bean

 2.2.3.根据id+类型获取bean(推荐使用)

2.3.使用Bean对象(非必须)

3.总结


1.存储Bean对象到Spring容器中

1.1.创建Bean

1.2.将Bean注册到Spring容器中

1.2.1.第一次存储Bean(可选,如果是第二次及以后,此步骤忽略)

需要自己先在创建好的项目中添加Spring配置文件spring-config.xml(命名尽量要符合语义),将此文件放到resources(存放资源文件)的根目录下。

(xml语言:是做数据信息描述的语言)

Spring配置文件的格式是固定不变的(无需记忆,自行保存即可):

<?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>

1.2.2.添加Bean标签

将User对象注册到Spring中,具体操作是在<beans>中添加如下配置:

<beans><bean id="user" class="beans.User"></bean>
</beans>

其中:

  • id:给bean起个名字(尽量符合语义),一会用的时候就用这个;且多个bean的id不重复。
  • class:要注册的对象的完整路径(包名+类名)。
  • 并不是当程序执行到这行代码时就把bean注册到Spring中了,而是当用的时候才会启动。
  • Spring中用的是懒加载(懒汉模式),SpringBoot中加注解属于饿汉模式。

2.从Spring容器中获取并使用Bean对象

(如果取多个Bean的话重复2.2.和2.3.步骤)

2.1.创建Spring上下文

得到Spring上下文对象,因为对象都交给Spring管理了,所以获取对象要从Spring中获取,那么就得先得到Spring的上下文。

2.1.1.Spring上下文对象可使用ApplicationContext

//1.得到Spring的上下文对象,创建的时候需要配置Spring配置信息
ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
ClassPathXmlApplicationContext 属于 ApplicationContext 的子类,拥有 ApplicationContext 的所有功能,是通过 xml 的配置来获取所有的 Bean 容器。

 一定要对应一致,否则会报错。

2.1.2.Spring上下文对象也可使用BeanFactory

BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("spring-config.xml"));

XmlBeanFactory()这个方法从Spring3.1后就过时了,可以采用上面的其他新方法来写(但写法复杂)。

2.1.3.(常见面试题)ApplicationContext VS BeanFactory

Spring容器有两个顶级的接口:ApplicationContext和BeanFactory,二者效果是一样的,区别如下:

①从继承关系和功能方面来说:

BeanFactory是ApplicationContext的父类。

BeanFactory只是提供了基础操作bean的方法,ApplicationContext除了继承BeanFactory的所有功能之外,还提供了自己独有的功能,比如:国际化支持,资源访问支持以及事件传播等方面的支持。

②从性能方面来说:

子:ApplicationContext是一次性加载并初始化所有bean,在创建对象的时候就会将所有的bean进行创建并初始化。(用户体验上更好,已经经历过加载初始化的过程,以后会快)

优点:第一次使用bean的时候比较快;

缺点:启动的时候比较慢,可能会造成资源的浪费。

父:BeanFactory是需要哪个bean才去加载哪个bean。(传统习惯节俭)

优点:是懒汉模式,不浪费任何资源;

缺点:第一次加载bean比较慢。

2.2.从Spring上下文对象中获取指定的Bean对象

getBean()方法有很多种重载方法:

2.2.1.根据id获取bean

//2.从Spring中得到bean对象
User user = (User) context.getBean("user");

context就是Spring对象的化身。

context.getBean("user")返回的是Object,此时需要强转为User。

缺点:如果是null,强转的话会报错。

另外注意:spring-config.xml中bean的id一定要和context.getBean中bean的id保持一致:

2.2.2.根据类型获取bean

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

优点:写法简单;

缺点:如果Spring中一个类型存在多个实例,不知道到底去拿哪个,那么程序就会报错:NoUniqueBeanDefinitionException(非唯一的bean异常)。

 

 2.2.3.根据id+类型获取bean(推荐使用)

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

此种写法通常是使用频率比较高的,推荐用法,安全。

2.3.使用Bean对象(非必须)

//3.调用相应的方法
user.sayHi("Java");

 

若程序报错,一定要自己去看报错日志,解决方案主要有:

  • 检查相关拼写是否正确;
  • 检查两个对应是否一致;
  • 检查生成的target文件夹下是否生成配置文件,若有缓存问题,删除target,重新运行,重新生成target。

3.总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-4560564.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

期权的概念

一、期权的概念 期&#xff1a;未来&#xff0c;权&#xff1a;权利 期权就是未来的一个权利&#xff0c;如果是未来买股票的权利&#xff0c;就是认购期权&#xff0c;也叫看涨期权&#xff1b;如果是未来卖股票的权利&#xff0c;就是认沽期权&#xff0c;也叫看跌期权。现…

运兴ETF期权投教之50ETF期权新手雷区

运兴ETF&#xff1a;上证50ETF期权的特点 【来源网站&#xff1a;运兴ETF www.50etf520.com】运兴ETF&#xff1a;上证50ETF期权_开户无条件_交易低手续费 上证50ETF期权是上交所新推出的产品&#xff0c;集合了上海证券交易市场中最核心的大中型龙头企业&#xff0c;完成了指…

【腾讯Bugly干货分享】程序员们也该知道的事——“期权和股票”

本文来自于腾讯Bugly公众号&#xff08;weixinBugly&#xff09;&#xff0c;未经作者同意&#xff0c;请勿转载&#xff0c;原文地址&#xff1a;https://mp.weixin.qq.com/s/pfj9NLLuKYAfJJF84R9WAw 作者&#xff1a;Bugly 精神哥 导语 今年的双十一&#xff0c;腾讯18周年司…

运兴ETF期权教学之期权对我们的用途

&#xff08;来源网站&#xff1a;运兴ETF www.50etf520.com&#xff09; 运兴ETF&#xff1a;上证50ETF期权_开户无条件_交易低手续费 个股期权推出跟我们普通投资者有什么关系&#xff1f;具体有什么用途? 个股期权对普通投资者的影响主要体现在&#xff1a;有了期权后&…

上证50ETF期权在的开户条件

一、开户渠道 目前商场上的开户渠道一般分为两种&#xff1a;一是在券商、期货公司&#xff0c;正规交易所开户&#xff1b;二是通过第三方分仓平台开通&#xff0c;此类需认真辨别真假盘&#xff0c;避免上当受骗 二、上证50ETF期权在期货公司的开户条件 1、资金要求 个人…

老ESTJ了

管理者型&#xff08;ESTJ&#xff09;的综合描述 作为一个ESTJ型的人&#xff0c;你的首要生活模式为外向型&#xff0c;喜欢用逻辑推理的方法来处事。你的次级生活模式为内向型&#xff0c;在这种模式中&#xff0c;你通过五感从外界获取信息。 ESTJ们的生活中充满了事实和…

你真的适合学Java语言,当一个程序员吗?

很多人看着Java程序员拿着高工资就开始眼馋&#xff0c;自己也想进入这个香饽饽行业。可是&#xff0c;学习Java编程技术是一件艰苦的事情&#xff0c;在学习的过程中&#xff0c;面对各种Bug和源源不断的问题&#xff0c;很多人都是坚持不下来的&#xff0c;就会对自己是否适合…

最好用Html转pdf的工具——wkhtmltopdf

<--好消息&#xff01;好消息&#xff01;好消息&#xff01; 粉丝超过2000的公众号主快来接单吧&#xff0c;快来领取你的第一笔广告费。&#xff08;粉丝数不够的小伙伴&#xff0c;请私信我一并解决&#xff09; 新用户注册红包1.8元&#xff0c;新用户注册并接单红包9.…