首页 > 其他分享 >Spring DI实现方式

Spring DI实现方式

时间:2024-08-17 22:27:10浏览次数:10  
标签:方式 DI Spring Component springframework myService org import public

1.set注入

语法:1)set 方法

           2)set 配置:<property name vaule ref>

2、构造注入

语法:1)构造方法

           2)构造配置:<constructor-arg name type index value ref>

3、注解注入

(1)@Component

用于标识一个类为Spring的组件,这个类会被Spring容器管理。

代码示例:

import org.springframework.stereotype.Component;

@Component

public class MyService { }

(2)@Autowired

用于自动注入依赖。Spring会根据类型找到匹配的bean并注入。

代码示例:

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Component;

@Component

public class MyController {

        private final MyService myService;

        @Autowired

        public MyController(MyService myService) {

                 this.myService = myService;

        }

}

(3)@Qualifier

当有多个相同类型的bean时,可以使用@Qualifier指定要注入的bean。

代码示例:

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.beans.factory.annotation.Qualifier;

import org.springframework.stereotype.Component;

@Component

public class MyController {

        private final MyService myService;

        @Autowired

        public MyController(@Qualifier("specificMyService") MyService myService) {

                this.myService = myService;

         }

}

(4)@Value

用于注入简单的值,比如属性文件中的配置。

代码示例:

import org.springframework.beans.factory.annotation.Value;

import org.springframework.stereotype.Component;

@Component

public class MyConfig {

        @Value("${my.property}")

        private String myProperty;

}

(5)@Configuration和@Bean

用于定义配置类和创建bean。

代码示例:

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

@Configuration

public class AppConfig {

        @Bean

        public MyService myService() {

                return new MyService();

        }

}

(6)@PostConstruct和 @PreDestroy

用于定义对象的初始化和销毁方法。

代码示例:

import javax.annotation.PostConstruct; import javax.annotation.PreDestroy;

import org.springframework.stereotype.Component;

@Component

public class MyBean {

        @PostConstruct

        public void init() { // 初始化代码 }

        @PreDestroy

        public void cleanup() { // 清理代码 }

}

(7)@Repository

定义数据访问层Bean的注解

(8)@Service

定义业务层Bean的注解

(9)@Controller

定义控制器Bean的注解

标签:方式,DI,Spring,Component,springframework,myService,org,import,public
From: https://blog.csdn.net/m0_65347933/article/details/141139498

相关文章

  • 基于Spring Boot的青年公寓服务平台的设计与实现
    目录一、前言二、技术介绍三、系统实现四、论文参考五、核心代码六、其他案例七、源码获取​​​​​​​作者介绍:✌️大厂全栈码农|毕设实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。✌️作者博客:曾几何时​​​​​​​......
  • LangGraph Studio:首款智能体(agent)IDE
    0前言LangGraphStudio提供了一个专门的智能体IDE,用于可视化、交互和调试复杂的智能体应用程序。本文来了解如何在桌面使用。LLM为新型智能体应用程序的发展铺平了道路——随这些应用程序演进,开发它们所需工具也必须不断改进。今天推出的LangGraphStudio——首款专为Agent开......
  • 深入理解 Spring 三级缓存:解决单例 Bean 循环依赖的利器
    目录一、什么是循环依赖?二、关于传说中的三级缓存1.基本概念:2.三级缓存是哪三级? 3.【举个例子】那三级缓存是怎么解决上述代码例子中的A、B互相依赖呢?详细过程:(理解用)简约版:(理解后看这个就行)三、关于三级缓存的适用范围适用的循环依赖范围:不适用的循环依赖范围:四、......
  • SpringMVC - 进阶
    1.Controller&RequestMapping@Controller用来标注在类上,表示这个类是一个控制器类,可以用来处理http请求,通常会和@RequestMapping一起使用。这个注解上面有@Component注解,说明被@Controller标注的类会被注册到spring容器中,value属性用来指定这个bean的名称@Target({Element......
  • Stable Diffusion概念
    stablediffusionmodels:是一类神经网络模型的统称,主要是使用扩散过程来生成高质量图片controlNet:automatic1111:checkpoint:一般也称model,是必须的主模型,文件体积GB级别,文件后缀通常是ckpt或者safetensorslora:是一种stablediffusionmodel,是通过保存的少量的训练参数来微调......
  • 以node / link文件表征的道路网络-----dijkstra算法yyds-----基于南京公路公开数据做
    前文已经基于公开数据,获得了南京的全域高速公路的路网数据,这些以node/link文件表征的道路网络不仅延续了osm地图中所包含的经纬度、名称、容量等信息,还包含了一个重要的道路等级字段“link_type_name”。交通部门一般以高速公路、国省干道、城市道路、乡道农路作为区分......
  • 「OC」NSPredicate —— 使用谓词过滤元素
    「OC」NSPredicate——使用谓词过滤元素文章目录「OC」NSPredicate——使用谓词过滤元素前言介绍常见用法**比较运算符****逻辑运算符****字符串比较运算符****聚合运算符****用于字典或者类当中****格式说明符(占位符)**实际运用总结参考文章前言在暑假的3Gsha......
  • powershell命令 域管理: 加入域:将计算机加入指定的 Active Directory 域。 重新加入域
    PowerShell命令示例:域管理加入域:powershellCopyCodeAdd-Computer-DomainName"yourdomain.com"-Credential"yourdomain\username"-Restart重新加入域:powershellCopyCodeRemove-Computer-UnjoinDomainCredential"yourdomain\username"......
  • springboot自动配置原理
    springboot自动配置原理springboot的出现就是为了简化Spring框架的开发,快速构建java项目。springboot的两个核心特性就是起步依赖和自动配置。起步依赖原理:maven的依赖传递自动配置原理:条件注入、SPI机制起步依赖假如我们没有使用SpringBoot,用的是Spring框架进行web程序的开......
  • JavaDoc生成文档两种方式
    JavaDoc生成文档方法一:通过命令行/***@authorzhang*@version1.0.0*@since1.8*/publicclasstest{Stringname;publicStringtest(Stringname)throwsException{returnname;}}在String下面输入/**,按Enter键在所建类中,......