基于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);
}
}