Spring 有哪些不同类型的依赖注入实现方式?
时间: 2023-06-04 11:07:17 浏览: 53
Spring有三种不同类型的依赖注入实现方式,分别是构造函数注入、setter方法注入和接口注入。其中构造函数注入通过构造函数参数传递依赖对象,setter方法注入通过setter方法注入依赖对象,接口注入则是让Bean实现特定的接口,通过接口方法注入依赖对象。
相关问题
spring依赖注入通常有哪些实现方式
Spring依赖注入通常有以下几种实现方式:
1. 基于XML配置文件的依赖注入:通过在XML配置文件中定义Bean对象及其属性,然后在需要使用该Bean对象的地方通过Spring容器进行注入。
2. 基于注解的依赖注入:通过在Java类中使用注解(如@Autowired、@Resource等)标注需要注入的Bean对象,然后在需要使用该Bean对象的地方通过Spring容器进行注入。
3. 基于Java配置类的依赖注入:通过在Java配置类中定义Bean对象及其属性,然后在需要使用该Bean对象的地方通过Spring容器进行注入。
4. 基于接口的依赖注入:通过定义接口及其实现类,然后在需要使用该接口的地方通过Spring容器进行注入。
5. 基于构造函数的依赖注入:通过在Bean对象的构造函数中定义需要注入的依赖对象,然后在需要使用该Bean对象的地方通过Spring容器进行注入。
Spring依赖注入通常有哪些实现方式,并举例说明
Spring 依赖注入(Dependency Injection,DI)是指通过外部的方式将所依赖的对象注入到类中,而不是由类自己去创建或查找依赖对象。Spring 中常见的 DI 实现方式包括以下几种:
1. 构造函数注入(Constructor Injection):通过构造函数将依赖注入到类中。
示例代码:
```java
public class UserServiceImpl implements UserService {
private UserDao userDao;
public UserServiceImpl(UserDao userDao) {
this.userDao = userDao;
}
}
```
2. Setter 方法注入(Setter Injection):通过 Setter 方法将依赖注入到类中。
示例代码:
```java
public class UserServiceImpl implements UserService {
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
}
```
3. 接口注入(Interface Injection):通过接口定义依赖注入方法,由实现类实现该接口完成注入。
示例代码:
```java
public interface UserDaoAware {
void setUserDao(UserDao userDao);
}
public class UserServiceImpl implements UserService, UserDaoAware {
private UserDao userDao;
@Override
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
}
```
4. 注解注入(Annotation Injection):通过注解标记需要注入的属性或方法,由 Spring 容器自动完成注入。
示例代码:
```java
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
}
```
以上是 Spring 中常见的 DI 实现方式,开发者可以根据具体需求选择不同的实现方式。