03使用Spring基于XML的方式注册第一个组件

基于XML的方式注册第一个组件

开发步骤

第一步: 创建Maven工程配置生成的pom.xml文件, 添加spring context基础依赖和junit依赖(注意根据Spring官方文档描述,Spring6需要JDK版本17)

  • 当添加Spring的基础依赖spring context之后,Maven会自动关联并引入其他依赖spring aop, spring beans, spring core,spring jcl,spring expression
xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.powernode</groupId>
    <artifactId>spring6-002-first</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!--学习Spring可以指定打包方式为jar即项目可以是普通的java项目-->
    <packaging>jar</packaging>

    <!--配置多个仓库-->
    <repositories>
        <!--spring里程碑版本的仓库,注意6.0.2及以上版本就是正式版本,使用时就不用再配置仓库了-->
        <repository>
            <id>repository.spring.milestone</id>
            <name>Spring Milestone Repository</name>
            <url>https://repo.spring.io/milestone</url>
        </repository>
    </repositories>
    <dependencies>
        <!--spring context依赖,如果你想使用spring的jdbc或者说其他的tx,那么还需要再次添加依赖-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.9</version>
            <!--<version>6.0.0-M2</version>-->
        </dependency>
        <!--junit依赖-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>
        <!--log4j2的依赖-->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.19.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-slf4j2-impl</artifactId>
            <version>2.19.0</version>
        </dependency>
    </dependencies>
    <!--配置Project工程结构的JDK版本才会有以下标签-->
    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
    </properties>
</project>

第二步: 在src/mian/java类路径下的bean包下定义User类

java 复制代码
public class User {
}

第三步: 在src/mian/resources类路径下编写spring的配置文件beans.xml,这个配置文件的名字可以随意(IDEA工具自带的有Spring配置文件模板)

  • bean标签的id属性: 代表对象的唯一标识,可以看做一个人的身份证号
  • bean标签的class属性: 用来指定要创建的java对象的类名,这个类名必须是全限定类名即带包名
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 http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!--配置bean,这样spring才可以帮助我们管理这个对象-->
    <bean id="userBean" class="com.powernode.spring6.bean.User"/>
    <!--这里也可以配置其他的bena,一个bena就代表一个对象-->	
</beans>

第四步: 编写测试程序

  • 第一步: 获取Spring容器对象,解析beans.xml文件创建所有的bean对象并放到容器中
  • 第二步: 根据bean的id从Spring容器中获取这个对象
java 复制代码
public class FisrtSpringTest{
    @Test
    public void testFistSpringCode(){
        // ClassPathXmlApplicationContext是专门从类路径当中加载spring配置文件的一个Spring上下文对象
        // 启动了Spring容器,解析beans.xml文件,并且实例化所有的bean对象,放到spring容器当中
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");
        // 根据bean的id从Spring容器中获取这个对象
        Object userBean = applicationContext.getBean("userBean");
        System.out.println(userBean);
    }
}
相关推荐
Zane1994122 分钟前
CAS 与原子类:Java 如何实现无锁编程
java·开发语言
晓晓_za8986681 小时前
Geo 优化源码蒸馏词机制:地域词库构建与匹配逻辑详解
运维·tcp/ip·spring·缓存·ci/cd
xier_ran2 小时前
【infra之路】GPU 存储层次总结:L1 / L2 / HBM
java·网络·数据库
wuminyu2 小时前
JDK21中虚拟线程和FFM协同实现高并发源码剖析
java·linux·c语言·jvm·c++
SWAGGY..2 小时前
【C++进阶】:(1)继承机制详解
java·jvm·c++
码匠许师傅3 小时前
【C++ 面试真题】27. 聊聊 C++ 的内存泄漏与内存布局
java·c++·面试
山甫aa3 小时前
Javaweb---MyBatis增删改查
java·数据库·后端·mybatis·springboot
PPPPickup3 小时前
金证秋招笔试
java·开发语言
不正经学生4 小时前
C语言结构体:自定义数据类型,让变量打包出行
java·c语言·开发语言·数据结构·算法
ycjunhua4 小时前
Spring AI 2.0 GA:ToolCallingAdvisor 重构与 Java Agent 新范式
java·人工智能·spring