spring注解自动注入有哪些、它们分别能作用于什么地方和具体用法
时间: 2024-01-22 18:03:54 浏览: 28
Spring注解自动注入有以下几种:
1. @Autowired:自动装配,默认按照类型进行匹配注入,可以结合@Qualifier指定名称进行匹配。
2. @Resource:和@Autowired功能类似,但是默认按照名称进行匹配注入,可以结合@Qualifier指定名称进行匹配。
3. @Inject:和@Autowired功能类似,但是是属于JSR-330规范,需要引入javax.inject依赖包才能使用。
4. @Value:用于注入属性值,支持SpEL表达式。
这些注解可以作用于类的成员变量、构造方法、Setter方法、方法参数上。具体用法如下:
1. 成员变量上使用:
```java
@Autowired
private UserService userService;
```
2. 构造方法上使用:
```java
@Autowired
public UserController(UserService userService) {
this.userService = userService;
}
```
3. Setter方法上使用:
```java
@Autowired
public void setUserService(UserService userService) {
this.userService = userService;
}
```
4. 方法参数上使用:
```java
@RequestMapping("/addUser")
public String addUser(@RequestBody User user) {
userService.addUser(user);
return "success";
}
```
需要注意的是,使用@Autowired和@Inject注解时,如果匹配到多个同类型的Bean,则会抛出异常;而@Resource注解则可以通过name属性指定具体的Bean名称进行匹配。同时,@Value注解需要在Spring配置文件中定义占位符并赋值才能使用。