使用@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
@Configurationpublic 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;
一般只有一些账户密码数据需要使用该功能。
常用注解到这里就介绍完了,最后说一句,实操才是硬道理,要多练!