Spring基础——使用XML配置一个Bean

目录

  • 初始化XML文件
  • 实例化Spring容器
    • 实例化ApplicationContext
  • 获取指定Bean对象

这里解释一下为什么现在都流行注解开发了而依然还要来去了解xml配置文件,甚至很多博客都不愿意去写xml相关的配置。
官方文档里提出了注解开发的优势是在声明中已经提供了大量的上下文,从而让配置变短更简洁,而xml则可以在不需要动源代码的情况加队组件进行注入,更加符合POJO的思想理念,此外注解开发会让配置变得更加分散,难以控制。
注解注入是在XML注入之前进行的。

annotation_xml

  • 记得先导包,既然是IoC容器相关那就导入spring-context包
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <spring.project.version>5.3.26</spring.project.version>
  </properties>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.13.2</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>${spring.project.version}</version>
    </dependency>
  </dependencies>

初始化XML文件

  • 这里手动创建一个xml文件
<?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
        https://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="..." class="..."> 
        <!-- 这个bean的合作者和配置在这里 -->
    </bean>

    <!-- 更多bean 定义在这里 -->

</beans>
  • id: 属性是一个字符串,用于识别单个Bean定义。
  • class:属性定义了 Bean 的类型,并使用类的全路径名。、

当然,和bean关联的类也不能少
XMLBean

public interface XmlBean {
    public void pirintHello();
}

XMLBean的实现类

public class XmlBeanImpl implements XmlBean {
    @Override
    public void pirintHello() {
        System.out.println("bean hello world");
    }
}

bean.xml

<bean id="xmlBean" class="com.nobugnolife.bean.impl.XmlBeanImpl"/>

实例化Spring容器

  • 在Spring IoC容器中org.springframework.context.ApplicationContext接口负责管理配置组装bean,Spring提供了几个ApplicationContext 接口的实现,比如ClassPathXmlApplicationContext 或 FileSystemXmlApplicationContext。
  • 大多数应用场景不需要我们自己写代码实例化IoC容器的实例,有Spring Tools模板帮我们轻松实现,不过这里还是先了解一下。

实例化ApplicationContext

ApplicationContext applicationContext = new ClassPathXmlApplicationContext("bean.xml");
  • 如果是FileSystemXmlApplicationContext的话需要提供到当前项目的路径
ApplicationContext ctx = new FileSystemXmlApplicationContext("src/main/resources/bean.xml");

获取指定Bean对象

  • ApplicationContext 提供了很多种获取Bean的模式,你可以通过bean的id或者name获取,也可以通过当前传入的class类型获取,也可以同时传入获取。
// XmlBean xmlBean = (XmlBean)applicationContext.getBean("xmlBean");
// XmlBean xmlBean = applicationContext.getBean("xmlBean",XmlBean.class);
XmlBean xmlBean = applicationContext.getBean(XmlBean.class);
  • 调用xmlBean方法
xmlBean.pirintHello();
  • 测试运行
    print_hello

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

React富文本编辑器开发(一)

这是一个系统的完整的教程&#xff0c;每一节文章的内容都很重要。这个教程学完后自己可以开发出一个相当完美的富文本编辑器了。下面就开始我们今天的内容&#xff1a; 安装 是的&#xff0c;我们的开发是基于Slate的开发基础&#xff0c;所以要安装它&#xff1a; yarn ad…

springboot-基础-eclipse配置+helloword示例

备份笔记。所有代码都是2019年测试通过的&#xff0c;如有问题请自行搜索解决&#xff01; 下一篇&#xff1a;springboot-基础-添加model和controller的简单例子常用注解含义 目录 配置helloword示例新建项目创建文件 配置 spring boot官方有定制版eclipse&#xff0c;也就是…

【Python笔记-设计模式】迭代器模式

一、说明 迭代器模式是一种行为设计模式&#xff0c;让你能在不暴露集合底层表现形式&#xff08;列表、栈和树等&#xff09;的情况下遍历集合中所有的元素。 (一) 解决问题 遍历聚合对象中的元素&#xff0c;而不需要暴露该对象的内部表示 (二) 使用场景 需要对聚合对象…

抖店怎么开店注册?新手需要准备什么?这几个步骤很关键!

我是电商珠珠 不少人瞄准了抖店这个短视频电商势头&#xff0c;想要在今年大干一场。关于抖店注册这方面&#xff0c;部分人还不太清楚&#xff0c;今天我就带大家一步步注册&#xff0c;看一遍就会了。 前期准备资料 前期新手的话&#xff0c;需要准备一张个体工营业执照&a…

C++/C百元买百鸡问题现在有100元要买100只鸡,一只公鸡5元,一只母鸡3元,三只小鸡一元,问今如何买?

具体代码如下 #include<stdio.h>int main() {int i, j, k;for (i 0; i < 20; i)for (j 0; j < 33; j) {k 100 - i - j;if (k % 3 0 && i * 5 j * 3 k / 3 100)printf("公鸡&#xff1a;%d&#xff0c;母鸡&#xff1a;%d&#xff0c;小鸡&…

p18 线性代数,行阶梯型矩阵

行阶梯型矩阵 行最简型矩阵

【VS Code】配置代码快捷提示

配置路径 进入如下界面&#xff0c;如果需要特定语言的配置&#xff0c;则选择相应的语言&#xff0c;这里演示为全局配置&#xff0c;没有创建过全局snippets配置的&#xff0c;使用New Global Snippets file 选项进行配置 然后在如下配置界面输入需要该配置的名称 配置编辑…

喜讯!持安科技CEO何艺获评安全419《2023年度十大优秀创业者》

近日&#xff0c;由网络安全产业资讯媒体安全419主办的《年度策划》2023年度十大优秀创业者正式出炉&#xff0c;零信任办公安全技术创新企业持安科技创始人兼CEO何艺&#xff0c;获评十大优秀创业者。 这是安全419第二届推出该项目的评选活动&#xff0c;安全419编辑老师在多年…

安装 Ubuntu 22.04.3 和 docker

文章目录 一、安装 Ubuntu 22.04.31. 简介2. 下载地址3. 系统安装4. 系统配置 二、安装 Docker1. 安装 docker2. 安装 docker compose3. 配置 docker 一、安装 Ubuntu 22.04.3 1. 简介 Ubuntu 22.04.3 是Linux操作系统的一个版本。LTS 版本支持周期到2032年。 系统要求双核 C…

【六袆 - React】Next.js:React 开发框架;Next.js开发框架的特点

Next.js&#xff1a;React 开发框架 Next.js的特点 1.直观的、基于页面的路由系统&#xff08;并支持动态路由&#xff09; Next.js 提供了基于文件系统的路由&#xff0c;意味着你可以通过创建页面文件来定义路由。 伪代码示例&#xff1a; // pages/index.js export defa…

挚达科技冲刺上市:乐视汽车曾是股东,多个投资者提前清仓提出

2月29日&#xff0c;上海挚达科技发展股份有限公司&#xff08;下称“挚达科技”&#xff09;递交招股书&#xff0c;准备在港交所主板上市&#xff0c;申万宏源香港为其独家保荐人。据此前媒体报道&#xff0c;挚达科技正在考虑赴港IPO&#xff0c;可能募集约10亿港元。 据官网…

three.js 向量叉乘cross

效果&#xff1a; 代码&#xff1a; <template><div><el-container><el-main><div class"box-card-left"><div id"threejs"></div><div></div></div></el-main></el-container>…

vulnhub-----Hackademic靶机

文章目录 1.C段扫描2.端口扫描3.服务扫描4.web分析5.sql注入6.目录扫描7.写马php反弹shell木马 8.反弹shell9.内核提权 1.C段扫描 kali:192.168.9.27 靶机&#xff1a;192.168.9.25 ┌──(root㉿kali)-[~] └─# arp-scan -l Interface: eth0,…

Vue ElementUI 修改消息提示框样式—messageBox 的大小

在窄屏模式下&#xff08;移动端或pda&#xff09;&#xff0c;提示框的宽度太宽&#xff0c;会出现显示不完全的问题。 应当如何修改 ElementUI 的样式呢&#xff1f; open() {this.$confirm(window.vm.$i18n.t("tips.conLogOut"),window.vm.$i18n.t("tips.tip…

数据库进阶——如何提升数据库的安全性,以MySQL和Redis加固为例

目录 引出数据库加固加固思路MySQLRedis Redis冲冲冲——缓存三兄弟&#xff1a;缓存击穿、穿透、雪崩缓存击穿缓存穿透缓存雪崩 总结 引出 数据库进阶——如何提升数据库的安全性&#xff0c;以MySQL和Redis加固为例 数据库加固 加固思路 账号配置 应按照用户分配账号&…

工厂模式:没你想像的那么难

工厂模式 工厂模式是一种创建型设计模式&#xff0c;它允许创建对象而无需指定将要创建的对象的具体类。它通过将对象的创建委托给一个单独的方法或类来完成&#xff0c;从而隐藏了对象的实例化逻辑。这样可以提高代码的灵活性&#xff0c;减少了代码中的重复和耦合。 在工厂…

css【详解】—— 圣杯布局 vs 双飞翼布局 (含手写清除浮动 clearfix)

两者功能效果相同&#xff0c;实现方式不同 效果预览 两侧宽度固定&#xff0c;中间宽度自适应&#xff08;三栏布局&#xff09;中间部分优先渲染允许三列中的任意一列成为最高列 圣杯布局 通过左右栏填充容器的左右 padding 实现&#xff0c;更多细节详见注释。 <!DOCTYP…

MySQL:数据库中有哪些锁

1、全局锁 加上全局锁后整个数据库就处于只读状态了&#xff0c;这时其他线程执行以下操作&#xff0c;都会被阻塞&#xff1a; 对数据的增删改操作&#xff0c;比如 insert、delete、update等语句&#xff1b;对表结构的更改操作&#xff0c;比如 alter table、drop table 等…

【AI+应用】怎么快速制作一个类chatGPT套壳网站

最近有人问我&#xff0c; 看了我之前写的一篇文章 [人工智能] AI浪潮下Sora对于普通人的机会 &#xff0c; 怎么做一个类chatGPT的套壳网站&#xff0c;是从0开始做么。 对于普通人来说&#xff0c;万事不懂先AI&#xff0c; AI找不到答案搜索google或百度。对于程序员来说…

电梯物联网之梯控相机方案-防止电瓶车进电梯

梯控现状 随着电梯产品在智能化建筑的日益普及,对于电梯的智能化管理 安全性需求 的要求越来越迫切。尤其今年来随着电瓶车的大量普及&#xff0c;发起多起楼道、轿厢电瓶车着火恶性事件&#xff0c; 造成了极大的社会 负面影响。控制电瓶车进入单元门&#xff0c;楼道以及电梯…