Spring常用注解 (3)

使用@Qualifier指定id

@Autowired
@Qualfier("adminServiceImpl")
private UserService userService; // private UserService userService = new AdminServiceImpl();
...

...
public class AdminServiceImpl implements UserService{
...
}

required=false

@Autowired是默认required=true的,设为false找不到就不会报错,而是置为null。

@Resource

没有@Autowired的按类匹配机制,但是可以指定name

@Resource(adminServiceImpl)
private UserService adminService;
...

public class AdminServiceImpl implements UserService{
...
}

功能基本被@Autowired覆盖。

@Resource(name = id) = @Qualifier(id) + @Autowired

除了利用上面这个等式缩减代码,我想不到别的使用场景。

@Configuration + @Beans

这俩是一起使用的,可以人为注册Bean,替代@Service和@Component

@Configuration
public class Beans{
 @Bean
 public UserService userServiceImpl(){
   return new UserServiceImpl();
}
 @Bean
 public UserService adminServiceImpl(){
   return new AdminServiceImpl();
}
}

// UserController.java
@Resource(name=adminServiceImpl)
private UserService adminService;

@Resource(name=userServiceImpl)
private UserService userService;

说实话比较鸡肋的功能......反正了解就好。

@Value

还差一口气就看完了。

@Value用来从配置文件(.properties/.yaml/.yml)中取参数。

例如:

# application.properties

local.name = crx
@Value("${local.name}")
private String author;

一般只有一些账户密码数据需要使用该功能。

 

常用注解到这里就介绍完了,最后说一句,实操才是硬道理,要多练!

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zydzpg.html