spring6项目搭建(入门)

文章目录

环境要求

  • JDK:Java17+(Spring6要求JDK最低版本是Java17)

  • Maven:3.6+

  • Spring:6.0.2

构建模块

复制代码
首先建立的spring的项目(project),项目下面有一些子模块(module)

(1)在idea中,依次单击 File -> New -> Project -> New Project

删除src目录

(2)构建子模块pro1

点击 Create 完成

引入依赖

这个依赖加到父工程的spring6下面的pom.xml

,然后后面的子工程就可以不在导入这个包了

xml 复制代码
<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>
    </dependency>
</dependencies>

初试Bean

1.创建java类HelloWorld

java 复制代码
package com.test;

/**
 * ClassName: HelloWorld
 * Package: com.test
 * Description:
 *
 * @Author Thmiao
 * @Create 2023/10/11 19:33
 * @Version 1.0
 */
public class HelloWorld {

    public HelloWorld() {
        System.out.println("这个是一个无参的构造方法!!");
    }

    public void sayHello(){
        System.out.println("helloworld");
    }
}

2.创建配置文件

依赖导入了之后,写配置文件

java 复制代码
<?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">


    <!--
   配置HelloWorld所对应的bean,即将HelloWorld的对象交给Spring的IOC容器管理
   通过bean标签配置IOC容器所管理的bean
   属性:
       id:设置bean的唯一标识
       class:设置bean所对应类型的全类名
   -->
    <bean id="helloWorld" class="com.test.HelloWorld"></bean>
</beans>

创建测试类测试

在test 下面建立测试类

java 复制代码
import com.test.HelloWorld;

import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;


public class HelloTest {
    @Test
    void test(){
        ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");
        HelloWorld HI = (HelloWorld) ac.getBean("helloWorld");
        HI.sayHello();
    }

    @Test
    void testRefection() throws Exception {
        Class clazz = Class.forName("com.test.HelloWorld");
        // 这个也可以获取到helloWord的类对象,只是这个方法过时了
//        HelloWorld o = (HelloWorld)clazz.newInstance();
//        o.sayHello();
        HelloWorld hello = (HelloWorld) clazz.getDeclaredConstructor().newInstance();
        hello.sayHello();
    }
    private Logger logger = LoggerFactory.getLogger(HelloTest.class);

这里写了两个测试方法,第一个test 方法是试的spring下得ioc

第二个testRefection 是为了自己写反射来实现获取bean (实例对象)对象

运行结果:(第一个方法的)

注意:创建对象时确实调用了无参数构造方法。

对象实现的原理

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

java 复制代码
private final Map<String, BeanDefinition> beanDefinitionMap = new ConcurrentHashMap<>(256);

Spring容器加载到Bean类时 , 会把这个类的描述信息, 以包名加类名的方式存到beanDefinitionMap 中,

Map<String,BeanDefinition> , 其中 String是Key , 默认是类名首字母小写 , BeanDefinition , 存的是类的定义(描述信息) , 我们通常叫BeanDefinition接口为 : bean的定义对象。

相关推荐
.生产的驴几秒前
Maven 公司内部私服中央仓库搭建 局域网仓库 资源共享 依赖包构建共享
java·maven
Auc241 分钟前
OJ判题系统第6期之判题逻辑开发——设计思路、实现步骤、代码实现(策略模式)
java·开发语言·docker·容器·策略模式
快乐肚皮9 分钟前
深入解析Docker:核心架构与最佳实践
java·运维·docker·容器
zhou18515 分钟前
MySQL保姆级安装教程(附资源包+5分钟极速配置+环境变量调试技巧)
java·python·mysql·php
小雅痞1 小时前
[Java][Leetcode middle] 55. 跳跃游戏
java·leetcode
com未来1 小时前
使用 NSSM 安装 Tomcat 11.0.6 为 Windows 服务
java·windows·tomcat
TDengine (老段)1 小时前
基于 TSBS 标准数据集下 TimescaleDB、InfluxDB 与 TDengine 性能对比测试报告
java·大数据·开发语言·数据库·时序数据库·tdengine·iotdb
养军博客1 小时前
spring boot3.0自定义校验注解:文章状态校验示例
java·前端·spring boot
lgily-12251 小时前
常用的设计模式详解
java·后端·python·设计模式
IT成长史1 小时前
deepseek梳理java高级开发工程师微服务面试题
java·微服务