加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

@Autowired注释在Spring中如何工作?

发布时间:2020-12-15 01:20:47 所属栏目:大数据 来源:网络整理
导读:真正的问题是,为什么允许我通过以下两种方式编写此代码: @Controllerpublic class PostController {@Autowired private PostService postService;@Autowired private CommentService commentService;....} 和 @Controllerpublic class PostController {priv

真正的问题是,为什么允许我通过以下两种方式编写此代码:

@Controller
public class PostController {
@Autowired 
private PostService postService;

@Autowired 
private CommentService commentService;

....
}

@Controller
public class PostController {

private PostService postService;
private CommentService commentService;

@Autowired 
public PostController(PostService postService,CommentService commentService){
    this.postService = postService;
    this.commentService = commentService;
}

....
}

这些摘要是否相同?推荐哪一个?

最佳答案
第一个解决方案通过反射直接注入值(基本上,JVM将获取您的对象并手动设置值).

第二种解决方案使用构造函数,这意味着该参数是必需的.另外,在将其自己分配给属性之前,您有时间使用所述值. (请注意,构造函数也将通过反射调用).

另一种方法是使用setter,这一次调用一个方法来设置值,这样您就可以在实际设置它之前对其进行操作,但这不是强制性的(因为它不是构造函数的一部分).

关于推荐的一个,我不确定实际上是否有一个“官方推荐的”,但是我倾向于只对强制字段使用构造函数注入而对非强制字段使用setter注入.但据我所知,这主要取决于您与之合作的团队或您的品味.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读