【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. 修改beans.xml](#1. 修改beans.xml)
- 2.使用注解标记Bean
- 小结:
-
-
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
