详解Spring支持的几种注入方式

在 Spring 框架中,Bean 的注入方式主要有以下几种,其中一些是自动注入的。以下是详细说明:

1. 构造函数注入 (Constructor Injection)

自动注入 :使用 @Autowired 注解时,Spring 容器会自动调用带有 @Autowired 注解的构造函数,并传入所需的依赖对象。

java 复制代码
@Component
public class MyService {

    private final MyRepository repository;

    @Autowired
    public MyService(MyRepository repository) {
        this.repository = repository;
    }
}

2. Setter 注入 (Setter Injection)

自动注入 :使用 @Autowired 注解时,Spring 容器会在创建 Bean 实例后,调用带有 @Autowired 注解的 setter 方法,并传入所需的依赖对象。

java 复制代码
@Component
public class MyService {

    private MyRepository repository;

    @Autowired
    public void setRepository(MyRepository repository) {
        this.repository = repository;
    }
}

3. 字段注入 (Field Injection)

自动注入 :使用 @Autowired 注解时,Spring 容器会自动将依赖注入到带有 @Autowired 注解的字段中。

java 复制代码
@Component
public class MyService {

    @Autowired
    private MyRepository repository;
}

4. 基于配置文件的注入 (XML-based Configuration)

手动配置:通过 XML 配置文件来定义 Bean 及其依赖关系,不是自动注入。

xml 复制代码
<bean id="myService" class="com.example.MyService">
    <property name="repository" ref="myRepository" />
</bean>

<bean id="myRepository" class="com.example.MyRepository" />

5. 基于 Java 配置的注入 (Java-based Configuration)

手动配置 :使用 @Configuration@Bean 注解来配置 Bean 及其依赖关系,不是自动注入。

java 复制代码
@Configuration
public class AppConfig {
    @Bean
    public MyRepository myRepository() {
        return new MyRepository();
    }

    @Bean
    public MyService myService(MyRepository repository) {
        return new MyService(repository);
    }
}

6. @Resource

自动注入@Resource 注解是 JSR-250 标准的一部分,Spring 也支持它。它可以用于字段、setter 方法或构造函数,Spring 容器会自动注入依赖。

java 复制代码
@Component
public class MyService {
    @Resource
    private MyRepository repository;
}

7. @Inject

自动注入@Inject 注解是 JSR-330 标准的一部分,Spring 也支持它。它可以用于字段、setter 方法或构造函数,Spring 容器会自动注入依赖。

java 复制代码
@Component
public class MyService {
    @Inject
    private MyRepository repository;
}

总结

自动注入

构造函数注入(使用 @Autowired

Setter 注入(使用 @Autowired

字段注入(使用 @Autowired

字段、setter 方法或构造函数注入(使用 @Resource@Inject

手动配置

基于配置文件的注入(XML 配置)

基于 Java 配置的注入(@Configuration@Bean

相关推荐
Java探秘者2 分钟前
Maven下载、安装与环境配置详解:从零开始搭建高效Java开发环境
java·开发语言·数据库·spring boot·spring cloud·maven·idea
攸攸太上2 分钟前
Spring Gateway学习
java·后端·学习·spring·微服务·gateway
2301_786964368 分钟前
3、练习常用的HBase Shell命令+HBase 常用的Java API 及应用实例
java·大数据·数据库·分布式·hbase
2303_8120444611 分钟前
Bean,看到P188没看了与maven
java·开发语言
苹果醋311 分钟前
大模型实战--FastChat一行代码实现部署和各个组件详解
java·运维·spring boot·mysql·nginx
秋夫人13 分钟前
idea 同一个项目不同模块如何设置不同的jdk版本
java·开发语言·intellij-idea
m0_6640470218 分钟前
数字化采购管理革新:全过程数字化采购管理平台的架构与实施
java·招投标系统源码
罗曼蒂克在消亡19 分钟前
graphql--快速了解graphql特点
后端·graphql
潘多编程21 分钟前
Spring Boot与GraphQL:现代化API设计
spring boot·后端·graphql
aqua353574235838 分钟前
蓝桥杯-财务管理
java·c语言·数据结构·算法