环境要求
- JDK:Java17+(Spring6要求JDK最低版本是Java17)
- Maven:3.6+
- Spring:6.0.2
构建模块
构建父模块spring6:在idea中,依次单击 File -> New -> Project -> New Project

删掉src
,用spring6作为父工程

创建模块

模块创建成功:

程序开发
引入依赖
<dependencies>
<!--spring context依赖-->
<!--当你引入Spring Context依赖之后,表示将Spring的基础依赖引入了-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>6.0.2</version>
</dependency>
<!--junit5测试-->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.3.1</version>
<!-- 把test注释掉,这样 在main里面也可以用-->
<!-- <scope>test</scope>-->
</dependency>
</dependencies>
创建java类
package com.lin;
public class User {
public User(){
System.out.println("0:无参构造器....");
}
public void add(){
System.out.println("add...");
}
}
创建配置文件
在resources目录创建一个 Spring 配置文件 beans.xml(配置文件名称可随意命名,如:springs.xm)
<?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">
<!--
配置User所对应的bean,即将User的对象交给Spring的IOC容器管理
通过bean标签配置IOC容器所管理的bean
属性:
id:设置bean的唯一标识
class:设置bean所对应类型的全类名
-->
<bean id="user" class="com.lin.User"></bean>
</beans>
创建测试类测试
package com.lin;
public class TestUser {
//创建Logger对象
//private Logger logger = LoggerFactory.getLogger(TestUser.class);
@Test
public void testUserObject() {
//加载spring配置文件,对象创建
ApplicationContext context =
new ClassPathXmlApplicationContext("beans.xml");
//获取创建的对象
User user = (User)context.getBean("user");
System.out.println("1:"+user);
//使用对象调用方法进行测试
System.out.print("2:");
user.add();
}
}
结果
0:无参构造器....
1:com.lin.User@5ddea849
2:add...
程序运行过程

spring会把resource目录下的文件变成字节码文件,放在
com
目录下ApplicationContext context =new ClassPathXmlApplicationContext("beans.xml");
:会到com
目录下加载并解析beans.xml
获取xml文件里面
class
属性和id
属性接着
ClassPathXmlApplicationContext
会使用反射,根据全类名(class
设置的值),创建对象,如://获取类Class对象 Class clazz = Class.forName("com.lin.User"); //调用方法创建对象 //Object o = clazz.newInstance(); User user = (User)clazz.getDeclaredConstructor().newInstance();
创建好对象之后,会把对象放在
DefaultListableBeanFactory
的beanDefinitionMap
。map的key就是beans.xml
配置的id=user
public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFactory implements ConfigurableListableBeanFactory, BeanDefinitionRegistry, Serializable { private final Map<String, BeanDefinition> beanDefinitionMap; }
context.getBean("user")
:根据id获取对象
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1909773034@qq.com