1
bootvue 248 天前
用构造方法注入吧 配合 lombok 写起来还省事
|
![]() |
2
beginor 248 天前 via Android
不推荐,建议使用构造函数注入
|
![]() |
3
actar 248 天前
构造器注入配合 lombok 的 @RequiredArgsConstructor 注解,挺省事的
|
![]() |
4
chendy 248 天前
依赖全部 private final
再来一个 lombok 的 RequiredArgsConstructor 完事 |
![]() |
5
Akitora 248 天前 via Android
构造注入+1
|
6
zed1018 248 天前
service/component 构造注入,bean function 形参注入,可写可不写。
|
7
dcsuibian 248 天前 ![]() |
8
fpure 248 天前 ![]() 我不管,我就要用 Autowired 注入
|
![]() |
11
zjp 248 天前
公司项目,经常一个 service 二三十个依赖项,还有循环依赖,不用字段注入会疯的...
|
![]() |
15
vate32 248 天前
表达的有问题吧,Autowired 就是用来注入的,但是可以用到字段、setter 方法、构造方法上,这些是有一些差别的
|
![]() |
16
vate32 248 天前
注入方式的问题,我之前就有提问过
https://v2ex.com/t/713586#reply27 |
![]() |
17
wanguorui123 248 天前
@Autowired 注入,@Scope("prototype") 创建实例
|
18
SpringChang 248 天前
用 Spring 的话,@Autowired 很省事!
|
21
unregister 248 天前
不建议使用,@Autowired Spring 不推荐,但是呢大家都在用。构造器有利于进行单元测试。
|
22
nosugar 248 天前 via iPhone
项目中用的还是挺多的
|
23
savingrun 248 天前
建议使用构造函数注入 +1
配合 lombok 的 @RequiredArgsConstructor 例子: @Service @RequiredArgsConstructor public class xxxxServiceImpl implements xxxAppService, xxxAdminService { private final xxxxDao dao; } |
24
Bingchunmoli 248 天前 via Android
普通用构造函数,循环依赖用 autowired , 没有谁更好只有谁更适合
|
26
fpure 248 天前 ![]() 我不太理解,为什么有人愿意使用 Lombok 这种语法层侵入的库却排斥 Autowired
|
27
kkkiio 248 天前
|
![]() |
29
mind3x 247 天前 ![]() 看样子很多人不知道,单构造函数的类甚至不需要标注任何 `@Autowired`, Spring 默认就会从构造函数注入。
|
30
kaneg 247 天前 via iPhone
的确知道应该使用构造方法而不是 Autowired ,但它就是顺手啊
|
![]() |
31
ychost 247 天前
很多时候需要 require = false 方便点
|
![]() |
32
Oktfolio 247 天前
我不用
|
![]() |
34
Rumble66 247 天前
构造器注入不能够像 Autowired 那样解决循环依赖
另外有一点, 为什么说循环依赖的代码是烂代码呢? AB 两个服务相互调用不是很常见的事情吗? |
![]() |
35
wellerman 247 天前
构造器注入+setter 注入,循环依赖都解决了。
|
36
Bingchunmoli 247 天前 via Android
@mind3x 通常没有构造方法
|
![]() |
38
11232as 247 天前
构造器注入啊,写测试多舒服
|
40
bthulu 247 天前
@unregister 有利个屁, 几十个依赖, 测某个方法用到其中一个依赖, 你一个个去数要塞到构造器第几个参数里么?
|
![]() |
41
windyboy 246 天前
最好在构造器注入
|
![]() |
42
siweipancc 246 天前 via iPhone
“最好”的选择在企业开发中往往崩,需求一个依赖一个的
|
43
jsdfzongkai 246 天前
@dqzcwxb 确认是平替吗?知道两者区别不?
|
44
dqzcwxb 246 天前
@jsdfzongkai #43
@Resource 可以根据 name 和 type 查找 bean 不需要额外支持 @Autowired 默认只支持 type,需要和 @Qualifie 一起使用才能支持 name 查找 这不是平替什么是平替?你说的区别又指哪个? |
45
nothingistrue 246 天前
不使用字段上的 @Autowired 的唯一好处是,去掉 Spring 后你仍然可以手动注入。这在 Spring 几乎不可能被去掉的前提下,属于过度设计。而且还是很严重那种,因为替代方式都有问题:
隐式构造器依赖注入(就是说得 private final + @RequiredArgsConstructor )需要有强的团队约定否则就严重影响代码可读性。 构造器注入容易出问题,而且参数多了会影响可读性 Setter 注入器因为 lombok 尚不能很好的支持,没法用。 |
46
jsdfzongkai 246 天前
@dqzcwxb 默认注入方式都不同 何来的平替
|
47
dqzcwxb 246 天前
@jsdfzongkai #46
@Resource 会根据 name 查找,查找不到会按照 type 查找 @Autowired 只能根据 type 查找,查找不到需要手动加上 @Qualifie 指定 name Resource 从功能上是大于等于 Autowired,你要是觉得还是不一样 你干脆说名字不一样得了 |
48
dqzcwxb 246 天前
@nothingistrue #45 如果存在不使用 spring 的场景,更推荐使用 Resource 这是 javax 注解
|
49
jsdfzongkai 246 天前 ![]() @dqzcwxb 不想跟你杠,只是不想你误导大家,现在你自己说清楚差别了,省的有些同学看到你上面的回复以为真的是平替
|