1

我想知道创建一个新类和使用@Autowired 注解注入它和创建一个类并获取这个类的对象并使用它的方法之间有什么区别。是否有任何技术原因(即更快的访问等)?

服务案例:

 @Service
 public class AuthorService implements AuthorServiceInterface {


   //some methods
 }

简单类案例:

 public class AuthorService implements AuthorServiceInterface {


   //some methods
 }

如果我想打电话给另一个班级的第一个,我必须写:

public Class myclass{

    @Autowired
    AuthorService authorservice;


} 

在第二种情况下,我必须写:

public Class myclass{


    AuthorService authorservice = new AuthorService():

} 

这两种情况有什么区别?

4

1 回答 1

3

第一个片段使用依赖注入,第二个片段没有。依赖注入允许

  • 将 MyClass 从 AuthorService 的具体实现中解耦,这将允许根据环境切换实现,例如
  • 使用单例(或会话范围或请求范围)AuthorService 而不是每次都重新实例化一个
  • 在对 MayClass 进行单元测试时注入模拟 AuthorService 实现
  • 在具体的 AuthorService 实例周围注入一个代理,这可以
    • 验证授权
    • 在每个方法调用之前启动一个事务并在方法调用之后提交/回滚它
    • 记录方法调用
    • 测量方法所花费的时间并计算统计数据
    • 使用 RMI 或 HttpInvoker 在另一台机器上调用 AuthorService
    • ...

请注意,您应该在 MyClass 中自动装配 AuthorServiceInterface,而不是 AuthorService。

于 2012-06-22T16:10:04.370 回答