【Spring】入门案例

1.步骤

① 创建maven工程(父工程+子模块)
② 引入Spring依赖
③ 创建类,定义属性和方法
④ 创建Spring配置文件(xml)
⑤ 测试

2.开始

① 新建父工程->新建子模块

image

② 添加依赖(子模块pom.xml)

<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>6.0.2</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.3.1</version>
</dependency>
</dependencies>

③ 新建实体类

package com.pxk;
public class User {
public void add(){
System.out.println("add......");
}
}

④ bean.xml配置文件,创建user对象

image

id:对象唯一标识
class:类全路径+类名称

<?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 id="user" class="com.pxk.User"></bean>
</beans>

⑤ 测试

package com.pxk;
import org.junit.jupiter.api.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestUser {
@Test
public void testUserObject(){
//1.加载spring配置文件,对象创建
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
//2.获取创建的对象
User user = context.getBean("user", User.class);
//3.通过对象调用方法
user.add();
}
}

3.程序分析

3.1 怎么创建的对象

① 给User类加一个无参构造器

public User(){
System.out.println("User类无参构造器调用");
}

② 再次执行测试类TestUser,说明创建对象时调用了无参构造方法
image

3.2 创建对象原理

dom4j:一个用来读写xml的api

① 加载配置文件,dom4j解析bean.xml文件,从中获取class属性值,类的全类名。
image

② 通过反射机制调用无参构造方法创建对象

Class clazz = Class.forName("com.pxk.User");
User user = (User)clazz.getDeclaredConstructor().newInstance();

3.3 创建好的对象放到哪里了

① bean对象最终存储在Spring容器中,源码底层是一个map集合,存储bean的map在DefaultListableBeanFactory类中

private final Map<String, BeanDefinition> beanDefinitionMap = new ConcurrentHashMap<>(256);

② Spring容器加载到Bean类时,会把这个类的描述信息(bean名称、作用域、是否初始化、单例多例等),以包名+类名的方式存到beanDefinitionMap

Map<String,beanDefinition>,key默认是类名首字母小写,value存的是类的定义(描述信息),通常交BeanDefinition接口为:bean的定义对象。

posted @   植树chen  阅读(53)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示