我想知道创建一个新类并为其注入@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。