首页 > 其他分享 >Spring 的容器配置

Spring 的容器配置

时间:2024-05-05 17:22:33浏览次数:21  
标签:容器 Java Spring 配置 bean 注解 Configuration based

除了 XML 配置外,Spring框架还提供了两种主要的方式来配置和管理应用中的bean:基于注解(Annotation-based Container Configuration)和基于Java的配置(Java-based Container Configuration)。这两种方式都是为了替代传统的XML配置,以更加面向代码的方式简化配置并提高可读性。下面是两者之间的主要区别:

Annotation-based Container Configuration(基于注解的容器配置)

  1. 概念:这种方式依赖于在类或者方法上使用特定的注解来指示Spring如何处理这些类或方法。例如,@Component, @Service, @Repository, @Controller等注解用于标记 beans,而@Autowired, @Resource, @Value等注解用于依赖注入和配置属性。

  2. 优势

  • 直接在代码中表达配置,使得代码更加清晰和集中。

  • 减少了XML配置文件,降低了维护成本。

  • 利用注解的元数据能力,能够自动装配bean,简化依赖关系管理。

  1. 局限性
  • 对于复杂配置如AOP切面、事务管理等可能需要额外的注解或配合Java配置。

  • 过多的注解可能会使代码显得杂乱,特别是当涉及到复杂的依赖关系和配置时。

Java-based Container Configuration(基于Java的配置)

  1. 概念:这是一种更加强大和灵活的配置方式,允许开发者通过编写Java类来定义bean以及它们之间的依赖关系。主要利用@Configuration类和@Bean方法来实现。这样的类通常包含一系列返回bean实例的方法,每个方法都标注有@Bean

  2. 优势

  • 提供了全面的编程式配置能力,几乎可以替代所有XML配置功能。

  • 支持复杂的逻辑和条件判断,适合处理复杂的配置需求。

  • 便于重用和模块化配置,可以通过组合@Configuration类来构建更大的配置结构。

  1. 局限性
  • 相比简单的注解配置,初始设置可能更为复杂,需要理解更多的概念。

  • 对于小型项目或简单应用,可能引入不必要的复杂度。

总的来说,基于注解的配置更适用于快速定义和管理bean的基本依赖关系,而基于Java的配置则提供了更高级和细粒度的控制,适合处理更复杂的配置逻辑。开发者可以根据项目的具体需求选择最合适的配置方式,甚至在同一个项目中混合使用这两种配置风格。

标签:容器,Java,Spring,配置,bean,注解,Configuration,based
From: https://www.cnblogs.com/xtyuns/p/18173662

相关文章

  • yum配置及仓库搭建
    yum实现YUM是一个在Linux系统中用于管理软件包的工具,可以在服务器和客户端之间跨网络使用。在这种系统中,服务器上通常会存储软件包(RPM包)和相应的元数据(repodata文件夹中的内容)。RPM包:这些是实际的软件包文件,它们包含了应用程序、库文件、配置文件等。这些包被存储在服务......
  • 测试 springboot 项目苍穹外卖,解决 Unable to connect to Redis 错误问题
       使用IDEA启动springboot项目苍穹外卖后台项目sky-take-out,测试“菜品批量删除”接口时,能够正常完成操作,但是服务器始终显示下面错误信息:2024-05-0320:54:24.134ERROR24360---[nio-8181-exec-3]o.a.c.c.C.[.[.[/].[dispatcherServlet]  :Servlet.service()fo......
  • C#配置程序引用的dll的位置
    在C#程序的App.config配置第三方dll的位置,使得C#程序可以自动加载子目录下的dll。参考博客:https://blog.csdn.net/qq_43307934/article/details/117805106<runtime><assemblyBindingxmlns="urn:schemas-microsoft-com:asm.v1"><probingprivatePath="bin;bin......
  • 2. 基础配置
    1.配置文件格式1.1配置文件自动提示功能消失解决方案​​1.2SpringBoot配置文件加载顺序(了解)application.properties>application.yml>application.yaml1.3注意事项SpringBoot核心配置文件名为applicationSpringBoot内置属性过多,且所有属性集中在一起修改,在使......
  • .NET 8 的openEuler 容器镜像
    目前.NET8的容器镜像已经支持openEuler,以openEuler为基础镜像的应用镜像:dotnet-deps、dotnet-runtime和dotnet-aspnet。基础镜像简介这里存放着由openEuler官方提供的容器镜像,包含openEuler基础镜像、应用镜像。在这里,你可以参考对应镜像的介绍,部署你需要的镜像容器。开源项目......
  • spring三级缓存
    第一级缓存:singletonObjects第二级缓存:earlySingletonObjects第三级缓存:singletonFactories先从“第一级缓存”找对象,有就返回,没有就找“二级缓存”;找“二级缓存”,有就返回,没有就找“三级缓存”;找“三级缓存”,找到了,就获取对象,放到“二级缓存”,从“三级缓存”移除。 在第......
  • WSL2配置Distrobox
    产生此想法的考量:我使用zerotier内网穿透,每一个WSL2都需要单独的添加进内网中,这很不优雅每一个WSL2都需要单独的分配ssh端口,这很不优雅每次损坏WSL2都需要完全重新安装,这也很不优雅由此,我萌生出使用distrobox的想法,因为网上教程足够的多,支持的系统也多(后期我可能会考虑incus......
  • spring生命周期
    1:Bean的建立:容器寻找Bean的定义信息并将其实例化。2:属性注入:使用依赖注入,Spring按照Bean定义信息配置Bean所有属性3:BeanNameAware的setBeanName():如果Bean类有实现org.springframework.beans.BeanNameAware接口,工厂调用Bean的setBeanName()方法传递Bean的ID。4:BeanFactoryAw......
  • 自动配置网络----DHCP
    DHCP工作原理Discover(发现):在DHCP获取过程中,客户端首先广播一个Discover报文,该报文表明客户端想要加入网络,并请求IP地址分配。Offer(提供):DHCP服务器收到客户端的Discover报文后,会向客户端发送一个Offer报文,其中包含一个可用的IP地址及相关网络配置信息。Request(请求):客户......
  • lxc容器没有cron的解决办法
    简介我经常使用cron定时脚本来更新我的cloudflareddns。最近想着把pve上跑着的fedora,切换到lxc容器试试。结果就遇到了没有cron的尴尬。安装dnfsearchcrontab dnfinstallcronatbs 启动systemctlstartcrond自启动systemctlenablecrond小结主要就是search......