Spring和Spring Boot框架中怎么理解Bean这个核心概念

在Spring和Spring Boot框架中,Bean是一个核心概念。要理解Spring Boot中的Bean,我们可以从以下几个方面进行:

  1. 定义:

    • Bean是Spring框架中的一个对象,由Spring容器管理。当我们在应用程序中需要某个对象时,我们不需要自己创建它,而是告诉Spring我们需要什么类型的对象,然后Spring会为我们创建并管理它。
  2. Bean的声明:

    • 使用@Component、@Service、@Repository或@Controller等注解标注的类,Spring会自动将其识别为Bean并加入到Spring上下文中。
    • 使用Java配置类中的@Bean注解方法也可以声明Bean。
    • 在XML配置文件中,通过<bean>标签也可以声明Bean。
  3. 依赖注入:

    • Spring的核心功能之一是依赖注入(Dependency Injection,简称DI)。这意味着当一个Bean依赖于另一个Bean时,Spring会自动为我们注入依赖,我们不需要手动创建和连接这些对象。
  4. 生命周期:

    • Spring管理Bean的生命周期。当应用程序启动时,Spring会创建并初始化所有的Bean。当应用程序关闭时,Spring会销毁这些Bean。
  5. 作用域:

    • Bean可以有不同的作用域,例如单例(Singleton)、原型(Prototype)、请求(Request)和会话(Session)等。默认的作用域是单例,这意味着在整个应用程序中,对于同一个Bean的多次请求都会返回同一个实例。
  6. 自动装配:

    • Spring Boot通过自动配置和自动装配大大简化了应用程序的开发。例如,当我们在classpath中有某个特定的库时,Spring Boot会自动为我们创建和配置相应的Bean。这是通过@EnableAutoConfiguration或spring.autoconfigure.exclude等注解和属性实现的。
  7. 总结:

    • 在Spring Boot中,Bean是框架为我们创建和管理的对象。我们只需要告诉Spring我们需要什么,它就会为我们处理对象的创建、初始化、依赖注入和销毁等生命周期事件。这使得我们可以专注于编写业务逻辑,而不是管理对象的生命周期和依赖关系。

举例说明一下

java 复制代码
public class TestActivitiController {

    @Autowired
    private ITestService testService;

    @GetMapping("/test")
    public String index(){
        return "hello";
    }
}
java 复制代码
public interface ITestService {
    public String index ();
}
java 复制代码
import com.qilaike.activiti.service.ITestService;
import org.springframework.stereotype.Service;

@Service
public class TestServiceImpl implements ITestService
{

    @Override
    public String index() {
        return "hello activity";
    }
}

要想在controller里面调用service的方法,那么必须在testServiceImpl 里面增加@Service注解,否则就会出现如下报错

相关推荐
聪明的笨猪猪15 分钟前
实际工程问题:AI生成Redis分布式锁的原子性缺陷导致库存超卖
java·经验分享·面试·ai编程
软件技术NINI1 小时前
基于SpringBoot和Vue的新能源汽车销售推荐系统
java·vue.js·spring boot·后端·汽车·毕业设计·毕设
Flynn Liang1 小时前
LangChain4j 生产级工程骨架:12 个模块 + Docker 一键启动
java·spring boot·langchain·rag·langchain4j
RuoyiOffice3 小时前
固定资产维修管理:从报修、审批到办结,原资产卡怎么回查?
spring boot·固定资产·ruoyi office·资产维修·维修审批·维修办结·资产履历
噢,我明白了3 小时前
JAVA中的一些基础应用知识点
java·开发语言
招风的黑耳3 小时前
SpringBoot+Vue+MySQL 民宿在线预定平台 完整可运行版(源码+文档)
vue.js·spring boot·mysql
SL_staff3 小时前
私有化低代码不是妥协,而是企业级数字化的自主可控主航道
java
装不满的克莱因瓶3 小时前
【SpringAI Alibaba】ReactAgent结构化输出OutputType与OutputSchema实战
java·人工智能·ai·springai·springaialibaba
秋天的怀念_David4 小时前
算法一千零一夜 · 第二十八夜 注册
java·程序人生·算法
Java码农也是农4 小时前
Spring 事务详解:@Transactional 如何生效、何时回滚、传播行为怎么选
java·spring boot·spring·事务