文档章节

利用Lombok编写优雅的spring依赖注入代码,去掉繁人的@Autowired

HeyS1
 HeyS1
发布于 09/26 19:27
字数 275
阅读 1008
收藏 46

大家平时使用spring依赖注入,都是怎么写的?

@Service
public class OrderService {
    @Autowired
    private UserService userService;

}

是不是很熟悉的感觉?但是呢 如果你用IDEA的话呢,它会提示你

Field injection is not recommended

大概就是spring 不推荐建使用这个方式。原因网上很多啦:https://blog.csdn.net/github_38222176/article/details/79506392

下面就是spring推荐的写法:

@Service
public class OrderService {
    private final UserService userService;


    @Autowired
    public OrderService(UserService userService) {
        this.userService = userService;
    }
}

 

若是注入的类太多的话呢,看起来挺繁琐的。最近偶然在网上发现使用Lombok可以写出简洁的代码:

@Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class OrderService {
    //这里必须是final,若不使用final,用@NotNull注解也是可以的
    private final UserService userService;

}

 

这样写实际上编译后和spring推荐的写法是一样的哦,是不是很简洁

 

© 著作权归作者所有

共有 人打赏支持
HeyS1
粉丝 11
博文 48
码字总数 28836
作品 1
广州
程序员
加载中

评论(21)

曾玉飞
声明为 final 就无法使用无参构造函数
myhnuhai
myhnuhai
不推荐这样用,降低了可读性,你让一个新手读代码一脸蒙蔽。
HeyS1
HeyS1

引用来自“idoz”的评论

那么问题来了@Resource 不行!
@Resource确实不行,不过文章标题是去掉@Autowired啦。:smirk:
idoz
idoz
那么问题来了@Resource 不行!
HeyS1
HeyS1

引用来自“翠翠”的评论

jdk 1.8 可以写成:@RequiredArgsConstructor(onConstructor_ = @Autowired)

引用来自“HeyS1”的评论

似我试了下,乎不可以

引用来自“翠翠”的评论

不会的,我试过的,可以用,而且这是官方文档里写的。
我这边是jdk8,但用IDEA会提示语法错误= =
HeyS1
HeyS1

引用来自“罗树鹏”的评论

这种方式我是不会用的,对人不友好
代码又要人容易看得懂,又要写得简洁,本来就有一定的矛盾。有取舍吧
翠翠
翠翠

引用来自“翠翠”的评论

jdk 1.8 可以写成:@RequiredArgsConstructor(onConstructor_ = @Autowired)

引用来自“HeyS1”的评论

似我试了下,乎不可以
不会的,我试过的,可以用,而且这是官方文档里写的。
罗树鹏
罗树鹏
这种方式我是不会用的,对人不友好
傻傻躺着
傻傻躺着
感觉没什么区别,注解而已
HeyS1
HeyS1

引用来自“翠翠”的评论

jdk 1.8 可以写成:@RequiredArgsConstructor(onConstructor_ = @Autowired)
似我试了下,乎不可以
Spring系列之Spring常用注解总结

传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop、事物,这么做有两个缺点: 1、如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大;如果按需求分开.xml文件,那么...

HJCui
05/29
0
0
@Autowired与@Resource的区别

1、@Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上。 2、@Autowired默认按类型装配(这个注解是属业spring的),默认情况下必须要求依赖对象必须存在,如果...

随智阔
2014/03/07
0
1
springboot+security整合1

说明springboot版本2.0.3 一、 介绍   Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的B...

烦嚣的人
07/23
0
0
spring @Autowired 与@Resource的区别

Spring不但支持自己定义的@Autowired注解,还支持几个由JSR-250规范定义的注解,它们分别是@Resource、@PostConstruct以及@PreDestroy。 @Resource的作用相当于@Autowired,只不过@Autowire...

xf_xin
2012/12/03
0
0
使用Spring2.5的Autowired实现注释型的IOC

使用Spring2.5的新特性——Autowired可以实现快速的自动注入,而无需在xml文档里面添加bean的声明,大大减少了xml文档的维护。(偶喜欢这个功能,因为偶对xml不感冒)。 以下是一个例子: 先...

沉默的子明
2014/05/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Shell特殊符号总结以及cut,sort,wc,uniq,tee,tr,split命令

特殊符号总结一 * 任意个任意字符 ? 任意一个字符 # 注释字符 \ 脱义字符 | 管道符 # #号后的备注被忽略[root@centos01 ~]# ls a.txt # 备注 a.txt[root@centos01 ~]# a=1[root@centos01...

野雪球
今天
2
0
OSChina 周二乱弹 —— 程序员圣衣

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @达尔文:分享Skeeter Davis的单曲《The End of the World》 《The End of the World》- Skeeter Davis 手机党少年们想听歌,请使劲儿戳(这里...

小小编辑
今天
5
0
[ python import module ] 导入模块

import moudle_name ----> import module_name.py ---> import module_name.py文件路径 -----> sys.path (这里进行查找文件) # from app.web import Personimport app.web.Person as Pe......

_______-
昨天
4
0
Redis性能问题排查解决手册

一、性能相关的数据指标 通过Redis-cli命令行界面访问到Redis服务器,然后使用info命令获取所有与Redis服务相关的信息。通过这些信息来分析文章后面提到的一些性能指标。 nfo命令输出的数据可...

IT--小哥
昨天
2
0
mixin混入

①新建mixin.js文件 const mixin = { methods: { /** * 分页公共方法 */ handleSizeChange(val) { this.pageData.size = val; this.query(); }, hand......

不负好时光
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部