【Spring】idea + maven 从零创建Spring IoC容器示例

【Spring】idea + maven 从零创建Spring IoC容器示例

        • [1. 环境准备](#1. 环境准备)
        • [2. 创建maven项目](#2. 创建maven项目)
        • [3. 添加依赖](#3. 添加依赖)
        • [4. 创建Java类与接口](#4. 创建Java类与接口)
          • [4.1 定义接口UserService](#4.1 定义接口UserService)
          • [4.2 实现接口UserServiceImpl](#4.2 实现接口UserServiceImpl)
        • [5. 配置Spring IoC容器](#5. 配置Spring IoC容器)
        • [6. 编写主类调用IoC容器](#6. 编写主类调用IoC容器)
        • 扩展:使用注解方式实现IoC
        • 小结:
1. 环境准备

idea编辑器

jdk1.8+

maven

2. 创建maven项目

① 打开IDEA → New Project → Maven → Next

② 填写项目信息:

Groupld:vip.buddha

ArtifactId: spring-ioc-demo

Version: 1.0.0

③ 点击Finish,项目结构如下:

java 复制代码
spring-ioc-demo
├── src
│   ├── main
│   │   ├── java
│   │   └── resources
│   └── test
│       └── java
└── pom.xml
3. 添加依赖
xml 复制代码
<dependencies>
    <!-- Spring 基础依赖 -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.3.39</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>5.3.39</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>5.3.39</version>
    </dependency>
    <!-- Spring IoC 核心依赖 -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.3.39</version> <!-- 与 Spring 版本一致 -->
    </dependency>
</dependencies>

手动添加完毕依赖,点击idea右侧maven面板的刷新按钮,下载依赖

4. 创建Java类与接口
4.1 定义接口UserService
java 复制代码
package vip.buddha.service;

public interface UserService {
    String getUserName();
}
4.2 实现接口UserServiceImpl
java 复制代码
package vip.buddha.service;

public class UserServiceImpl implements UserService{
    @Override
    public String getUserName() {
        return "buddha";
    }
}
5. 配置Spring IoC容器

在src/main/resources下创建beans.xml

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 -->
    <bean id="userService" class="vip.buddha.service.UserServiceImpl"/>
</beans>
6. 编写主类调用IoC容器
java 复制代码
package vip.buddha;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import vip.buddha.service.UserService;

public class Main {
    public static void main(String[] args) {
        // 1、加载Spring配置文件
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        // 2、从容器中获取bean
        UserService userService = context.getBean("userService", UserService.class);
        // 3、调用方法
        String userName = userService.getUserName();
        System.out.println(userName);
    }
}

编写完毕项目结构如下图:

java 复制代码
spring-ioc-demo
├── src
│   ├── main
│   │   ├── java
│   │   │   ├── vip.buddha
│   │   │   │   ├── service
│   │   │   │   │   ├── UserService.java
│   │   │   │   │   ├── UserServiceImpl.java
│   │   │   │   ├── Main.java
│   │   └── resources
│   │   │   ├── beans.xml
│   └── test
│       └── java
└── pom.xml
扩展:使用注解方式实现IoC
1. 修改beans.xml

开启组件扫描

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"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">
    <!-- 开启组件扫描 -->
    <context:component-scan base-package="vip.buddha"/>
</beans>
2.使用注解标记Bean
java 复制代码
package vip.buddha.service;

import org.springframework.stereotype.Component;

@Component("userService") // 等价于 <bean id="userService" .../>
public class UserServiceImpl implements UserService{
    @Override
    public String getUserName() {
        return "buddha";
    }
}
小结:

IoC核心思想:对象的创建和依赖管理由Spring容器负责,而非手动new

相关推荐
Bingo_BIG4 天前
Java Spring框架:单表的查询、新增、修改、删除、导入、导出
java·spring·前后端
paopaokaka_luck4 天前
智慧社区综合服务小程序(人脸识别、AI问答、Echarts图形化分析)
前端·javascript·spring boot·spring·数据分析·echarts
牧瀬クリスだ4 天前
YAML配置详解:SpringBoot实战指南
java·spring·yml
需要8264 天前
JVM 内存区域与对象创建:一次 GC 从哪来
java·jvm·spring boot·spring·servlet·tomcat
JAVA面经实录9174 天前
IDEA 开发知识
java·intellij-idea·idea
2601_953824614 天前
基于SSM的水果超市管理系统
java·tomcat·maven
guo_wen_qiang4 天前
springboot如何自定义一个启动器starter
java·spring boot·intellij-idea
paopaokaka_luck4 天前
考研政治刷题小程序(AI推荐题目、ECharts数据分析、章节练习与专项训练、模拟考试、错题本与收藏夹、学习打卡与目标管理、题库和组卷维护)
前端·javascript·spring boot·spring·数据分析·echarts
步行cgn5 天前
Spring 基于 XML 的自动装配:byType 详解
java·后端·spring
边境悍匪5 天前
蜗牛学苑 Java 智能体学习 Day46|贯穿项目 2 思维导图复盘
java·开发语言·vue.js·学习·spring