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的定义对象。

相关推荐
majingming1234 小时前
FUNCTION
java·前端·javascript
zopple4 小时前
常见的 Spring 项目目录结构
java·后端·spring
xuxie996 小时前
N11 ARM-irq
java·开发语言
cjy0001116 小时前
springboot的 nacos 配置获取不到导致启动失败及日志不输出问题
java·spring boot·后端
wefly20176 小时前
从使用到原理,深度解析m3u8live.cn—— 基于 HLS.js 的 M3U8 在线播放器实现
java·开发语言·前端·javascript·ecmascript·php·m3u8
zhenxin01226 小时前
Spring Boot实现定时任务
java
小江的记录本7 小时前
【事务】Spring Framework核心——事务管理:ACID特性、隔离级别、传播行为、@Transactional底层原理、失效场景
java·数据库·分布式·后端·sql·spring·面试
sheji34167 小时前
【开题答辩全过程】以 基于springboot的校园失物招领系统为例,包含答辩的问题和答案
java·spring boot·后端
寂静or沉默7 小时前
2026最新Java岗位从P5-P7的成长面试进阶资源分享!
java·开发语言·面试
卓怡学长7 小时前
m289在线交友系统
java·spring·tomcat·maven·intellij-idea·hibernate