@Autowired vs @Required on setter

前端 未结 3 1548
广开言路
广开言路 2021-01-01 10:16

I\'m curious to know what\'s the difference between code like this:

class MyClass {
   @Autowired
   MyService myService;
}

and code like t

3条回答
  •  谎友^
    谎友^ (楼主)
    2021-01-01 10:41

    @Autowired annotation is used when you want to autowire a bean. @Autowired is not limited to setter. It can be used with a constructor and a field as well. If you use @Autowired annotation on a field, that field will be autowired with bean having matching data type.

    @Required checks if a particular property has been set or not. If a field has been annotated with @Required annotation and that field is not set, you will get org.springframework.beans.factory.BeanInitializationException.

    Refer:

    Spring @Autowired usage

    Recommended usage of Spring's @Required annotation

    Edit: As pointed by 'kryger': field annotated with @Autowired is effectively also @Required (unless you explicitly set its parameter required to false). eg:

    @Autowired(required=false)
    private ObjectType objectType;
    

    For a field that has been annotated @Autowired, if bean with matching data type in not available, org.springframework.beans.factory.BeanCreationException is thrown.

提交回复
热议问题