我最近开始使用Spring。我正在制作spring mvc项目。所以我的问题是,如果我只使用Spring实现接口并使用特定实现自动装配它,或者只使用类实例,以防我只有一个接口的实现?
例如:
@Controller
public class MyController {
@Autowired
MyService myService;
@RequestMap("/")
public String mainPage() {
...
}
}
或
@Controller
public class MyController {
@RequestMap("/")
public String mainPage() {
MyService myService = new MyServiceImpl();
...
}
}
如果只有一个MyService接口的实现?
答案 0 :(得分:3)
在大多数情况下,你应该注射,因为:
MyServiceImpl
,因为它管理这个对象即使您的服务没有界面,因为您应考虑注射的第二个原因。
当你想要跳过Spring的唯一情况是当类没有任何依赖并且是无状态时。但很可能这样的类是一个根本不需要任何实例的实用程序,因为它只有static
个成员。
答案 1 :(得分:1)
这取决于MyService是否是一个持有状态的bean。如果MyService不保持状态,那么您不需要创建新实例,并且可以让Spring注入具有上述优点的