SpringBoot-@Autowired注解使⽤详解
@Autowired 注解的作⽤是什么?
@Autowired由Spring框架定义,当Spring框架的项⽬在运⾏时如果发现由它管理的Bean对象中有使⽤@Autowired注解描述的属性/⽅法,Spring会按照指定规则为属性/⽅法赋值(DI)。
@Autowired 注解如何使⽤?
springboot框架的作用@Autowired是⼀种注解,可以对构造器、⽅法、参数、字段和注解进⾏标注,源码如下:
@Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD, ElementType.ANNOTATION_TYPE}) @Retention(RetentionPolicy.RUNTIME)
@Documented
public@interface Autowired {
// @Autowired 只有⼀个required元素,默认是true
// require=ture 时,表⽰解析被标记的属性/⽅法,在容器中⼀定有对应的bean存在,否则报错。
// require=false时,表⽰解析被标记的属性/⽅法,在容器中没有到对应的bean依然不会报错。
boolean required()default true;
}
(1). @Autowired⼀般⽤在Controller层中⽤来装配Service对象,当同⼀个Service接⼝对象有多个实现时,需要使⽤@Qualifier来制定具体的装载依赖,否则会报错,除⾮⽤@Autowired标注的属性/⽅法的类型是Map或者List:No qualifying bean of type
‘com.hadoopx.file.service.ISysFileService’ available: expected single matching bean but found 2: LocalSysFileServiceImpl,FastDfsSysFileServiceImpl,当然这个问题也可以使⽤@Primary来解决。NoUniqueBeanDefinitionException,说明有多个满⾜条件的bean进⾏⾃动装配,程序⽆法正确做出判断使⽤哪⼀个,通过将
@Qualifier注解与我们想要使⽤的特定Spring bean的名称⼀起进⾏装配,Spring框架就能从多个相同类型并满⾜装配要求的bean中到我们想要的
(2). @Autowired根据类型进⾏⾃动装配,如果需要按名称进⾏装配,则需要配合@Qualifier使⽤。
(3). @Autowired在装配依赖对象时,默认要求依赖对象必须存在,如果允许为NULL,需要设置required属性为false。
(4). 被@Autowired标注的属性/⽅法所在的类,需要是Spring容器中的bean。
@Service
public class SysOperLogServiceImpl implements ISysOperLogService {
@Autowired
private SysOperLogMapper operLogMapper;
}
@RestController
@RequestMapping("/user")
@Api(value ="管理员管理", description ="提供对管理员对象的增删改查")
public class SysUserController extends BaseController {
@Autowired
private ISysUserService userService;
@Autowired
private ISysRoleService roleService;
}
(5). 被@Autowired标注的属性/⽅法的类型是Map且Key为String类型,Spring则会把所有符合该类型的bean装载到Map中,key是bean 名称,value则为该bean的实例。在简单⼯程模式中,可以使⽤该特性替换传统的将服务实现存⼊Map的⽅式。
(6). 被@Autowired标注的属性/⽅法的类型是List,Spring则会把所有符合该类型的bean装载到List集合中。
(7). @Autowired与@Resource都可以⽤来装配bean,都可以写在字段上。@Autowired默认按类型装配,@Resource(这个注解属于J2EE的),默认安照名称进⾏装配,名称可以通过name属性进⾏指定。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论