posts

Jun 14, 2018

使用构造方法注入依赖

Estimated Reading Time: 1 minutes (55 words)

1 什么是依赖注入

在软件工程中,依赖注入是一种对象提供另一对象的依赖性的技术。依赖关系是可以使用的对象(服务)。注入是将依赖关系传递给将使用它的依赖对象(客户端)。

2 为什么使用构造方法注入

使用Spring提供的@Autowired注解,我们可以通过标记构造方法(constructor)、域(field)、setter方法和配置方法(config methods)来实现依赖注入。我们使用较多的是标记域的方式,这使得客户端可以创建该类的不合法的实例,不利于问题排查和测试,这一点在Oliver Gierke的Why field injection is evil的文章中已有说明。

3 如何使用构造方法注入

结合Lombok注解使用构造方法注入可简化代码:

@Service
@Slf4j
@RequiredArgsConstructor(onConstructor = @__(@Autowired))   //注意点1
public class OssSyncService {
    private final @NonNull  //注意点2
    OssSyncObjectRepository ossSyncObjectRepository;

    private final @NonNull
    OssSyncInfoRepository ossSyncInfoRepository;

    private final @NonNull
    S3Config s3Config;
//其余省略
}

4 参考