Autowired Services和Objects Spring MVC之间存在差异

时间:2012-06-22 15:38:12

标签: spring-mvc

我想知道创建一个新类并使用@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():

} 

这两种情况有什么区别?

1 个答案:

答案 0 :(得分:3)

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

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

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