自动连线服务和对象 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():
} 

这两种情况有什么区别?

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

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

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

最新更新