依赖注入代码具体实现
时间: 2024-09-09 19:02:19 浏览: 30
依赖注入(Dependency Injection,DI)是一种软件设计模式,它允许组件之间通过外部提供所需的服务,而不是内部自行实例化。在许多现代开发框架中,如Spring、Django、Kotlin Coroutines等,都有内置的支持。以下是基本的代码实现示例:
**Java (Spring) 示例**:
```java
// 定义一个依赖
public class UserService {
private final UserRepository userRepository;
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
// 使用方法中依赖userRepository
public User getUser(int id) {
return userRepository.findById(id);
}
}
// 在配置中注入
@Configuration
public class AppConfig {
@Bean
public UserService userService(UserRepository userRepository) {
return new UserService(userRepository);
}
@Bean
public UserRepository userRepository() {
return new UserRepositoryImpl();
}
}
```
在这个例子中,`UserService`需要`UserRepository`作为构造函数参数,而在Spring的配置文件中,我们创建了一个`UserService` bean并将其依赖的`UserRepository`也注入进去。
**Python (Django) 示例**:
```python
from django.db import models
class UserService:
def __init__(self, user_repository):
self.user_repository = user_repository
def get_user(self, id):
return self.user_repository.get(id)
# 在settings.py或视图中注入
class MyAppConfig:
def ready(self):
from .models import UserRepository # 引入自定义repository
UserViewSet.set_serializer_class(UserSerializer)
UserViewSet.set_permissions_classes([IsAuthenticated])
UserViewSet.user_repo = UserRepository()
```
在这里,`UserService`的构造函数接受一个`UserRepository`实例,然后在视图设置中将这个仓库关联到视图。