总结一下 Spring 中存取 Bean 的相关注解, 以及这些注解的用法.

一:对于Spring中存取Bean的相关注解有:

1.@Component:

2.@Autowired

3.@Service

4.@Repository

5.@Configuration

6.@Bean

7.@Controller

8.@Resource

二:应用场景及具体用途和用法:

应用场景:

应用分层:

1.表现层 @Controller

2.业务逻辑层 @Service

3.数据层 @Repository

4.配置层 @Configuration

5.组件 @Component

注解一些理解:

一: 1,2,3,4注解都由@Component注解衍生,所以2,3,4注解在使用时可以由@Component注解代替,但是@Controller注解是个例外,不能由@Component注解代替.

二:由于不同层级需要各自对应的注解去分层+赋能,所以才需要@Component衍生出这些注解应用在不同的场景,其实际作用一致,只是为了让人们在看到注解后可以对应知道是哪一层的代码,让代码分层更清晰,人更容易理解和维护.

三:当然除了 "让人看懂",这些派生注解还附带了少量专属的 "赋能" 功能(这是 Spring 设计它们的另一层原因,这里不仔细展开了)

具体用途:

针对Spring中的Bean,注解可分成两类:(bean的存储+bean的获取)

1.bean的存储(五大注解):@Component,@Controller,@Service,@Repository,@ Configuration

2.bean的获取:@Autowired,@Resource,@Qualifier

具体用法:

先存(Bean的存储):

1.在类前写上存储bean的注解,从而将bean对象的创建和管理,依赖关系的维护,从"程序员手动控制"交给Spring容器自动控制.

后取(Bean的获取):

2.在属性上/构造器上/Setter方法上写上获取bean的注解,从而从Spring这个IOC容器中获取到bean.

具体操作****如下:

java 复制代码
import org.springframework.stereotype.Service;

// 默认Bean名称:helloService(类名首字母小写)
@Service
public class HelloService {
    public void sayHello() {
        System.out.println("Hello! 这是Spring Boot容器中的Bean~");
    }
}



Spring Boot的核心启动+Bean的获取:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;

@SpringBootApplication
public class MySpringBootMain {
    public static void main(String[] args) {
        // 1. 启动容器
        ApplicationContext context = SpringApplication.run(MySpringBootMain.class, args);

        // 2. 按你笔记的写法:getBean("Bean名称", Bean类型)
        // Bean名称默认是类名首字母小写 → "helloService"
        HelloService helloService = context.getBean("helloService", HelloService.class);

        // 3. 使用Bean
        helloService.sayHello();
    }
}

3.对于无法用类注解声明的Bean则需要用到@Bean注解,比如第三方类和自定义穿件逻辑的类.

注意:@Bean必须跟五大注解其一一起使用

相关推荐
Java成神之路-10 分钟前
Spring Cloud 微服务契约先行:为什么 Controller 建议要实现 Feign 接口?
spring·spring cloud·微服务
数智化管理手记30 分钟前
海量数据如何沉淀有效数据资产?数据标准化治理方案如何搭建?
java·大数据·人工智能
何事误红尘32 分钟前
Mqtt学习笔记(一):Mosquitto服务器搭建、MQTTX安装测试
学习
cfm_29141 小时前
SpringAI + Ollama 本地大模型
java·开发语言·人工智能·语言模型
青山是哪个青山1 小时前
LangChain 学习笔记(三):LangSmith 调试与监控
笔记·学习·langchain
鲸采云SRM采购管理系统2 小时前
采购管理系统哪家好?2026最新测评对比
java·服务器·数据库
那年窗外下的雪.2 小时前
AIDC 学习日志 第 04 天 BGP Underlay 基础与路由选择
服务器·学习·php
0x533 小时前
Java网络编程(二)
java·服务器·网络
蒸蒸yyyyzwd3 小时前
cpp选手备战后端学习笔记day6 秋招笔试题
笔记·学习
Flittly3 小时前
【雕虫大技】Agent 动态 Skill 供应链安全加固(三):输出校验与治理闭环实战
java·spring boot·spring