本文介绍了如何在spring框架依赖关系注入中使用项目lombok获得最佳实践。
Spring框架本身有多种方法可以执行相关性注入。 可选的灵活性是Spring框架的优点。 但是,并非所有依赖性注入选项都被视为最佳做法。 实际上有些东西不太好。
依赖于注入例
为了确定需要使用的各种依赖关系注入选项,我们给出了一些设置示例。
以Spring Service为例。 为了我们的目的,这个服务有返回字符串的方法。 使用service,然后使用Spring注入几个模拟控制器。 请记住,我们只是在寻找使用spring框架注入依赖关系的方法。
范例服务
公共类我的服务{
公共字符串获取hello () {
返回' hello ';
}
}
我们字段中有公共属性的服务。 可以对此字段进行评论。 Spring将注入到服务的实例中。
属性注入
场控制器
@Controller
公共类字段控制器{
@Autowired
我的服务我的服务;
公共字符串say something (
return myService.getHello (;
}
}
这只是公共属性,没有setter。 很明显,这不是好的实践,我不推荐。
您可以对此进行改进,使对该字段的访问权限变为私有。 Spring Framework允许您自动组装专用字段。 我确实看到有人这么做了。 Spring执行一些反射魔术来执行依赖性注入
私人现场控制器
publicclassprivatefieldcontroller {
@Autowired
隐私我的服务我的服务;
公共字符串say something (
return myService.getHello (;
}
}
最好只使用私人字段,但测试成了头痛的问题。 必须启动Spring Context,或使用一些Spring实用程序执行依赖注入以进行测试。 虽然不是世界末日,但总的来说会很麻烦。
这可以通过为私有属性提供setter来改进。 Getter和Setter通常被认为是面向对象编程中的最佳实践。 使用注释setter方法很容易指示Spring使用setter进行相关性注入。
方法注入
安装控制器
@Controller
公共类设置控制器{
隐私我的服务我的服务;
@Autowired
我的服务我的服务(publicvoidsetmyservice )。
this.my服务=my服务;
}
公共字符串say something (
return myService.getHello (;
}
}
这是使用私有字段时的明显改进。 有人抱怨这个代码写得太多了。 但是,实际上,从South Park第一季度开始,这些任务在现代IDE中实现了自动化。
构造函数注入
以下选项是使用构造函数: 到目前为止,这是我们研究过的最好的方法。 使用构造函数设置注入属性时,不需要指定自动装配注释。 这是一个很好的功能,可以节省输入时间。 从spring framework 4.2版开始,对相关性注入构造函数的注释是可选的。
构造器控制器
@Controller
publicclassconstructorcontroller {
隐私我的服务我的服务;
publicconstructorcontroller (我的服务我的服务) {
this.my服务=my服务;
}
公共字符串say something (
return myService.getHello (;
}
}
基于构造函数的依赖注入无疑被认为是最佳做法。 有一段时间我个人更喜欢基于setter的注入,但后来又转向了
基于构造函数的注入。我们仍然可以改善我们的示例。现在有两个主要问题。 第一,我们的服务类型是具体类型。硬类型的依赖注入不是最佳实践。
第二个问题是,我们要注入的属性未声明为final。因此,从理论上讲,该类可以在实例化注入的属性后对其进行修改。依# 赖注入最佳实践
依赖项注入的最佳实践是利用接口,构造函数和 final 属性。
我已经设置了“最佳实践”服务接口,并提供了服务实现---使用了 Spring Service 注解。
最佳实践服务接口
public interface BpService {
String getHello();
}
最佳实践服务实现
@Service
public class BpServiceImpl implements BpService {
@Override
public String getHello() {
return "The Best Hello!";
}
}
使用 Project Lombok
现在,使用 Project Lombok 进行依赖注入的最佳实践的秘诀在于:
声明一个 final 属性接口
为类添加 Project Lomboc 注解 @RequiredArgsConstructor
现在,Project Lombok 将为声明为 final 的所有属性生成一个构造函数。Spring 会自动使用 Lombok 提供的构造函数来自动装配该片段。
Lombok Controller
@RequiredArgsConstructor
@Controller
public class BpFinalConstructorController {
private final BpService bpService;
public String saySomething(){
return bpService.getHello();
}
}
这是执行此操作的真正好方法。您的代码保持非常干净。使用 Spring时,通常需要多个自动装配属性。
当您需要添加另一个 bean 时,只需声明一个 final 属性。
如果您重构并且不再需要 Spring 托管的依赖项,则只需删除 final 属性。
你不再需要维护设置器或构造函数代码。Project Lombok 减轻了您的日常工作。
我在日常编码中一直使用这种技术。绝对是节省时间。并导致更干净的代码。未使用的属性和未使用的构造函数参数已一去不复返了。重构现在不那么痛苦了!
本文的源代码可在GitHub上找到。
以上就是Spring 依赖注入实现示例的详细内容,更多关于Spring 依赖注入的资料请关注脚本之家其它相关文章!