参考文章:IOC原理
public class BookService {
private DataSource dataSource;
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}
}
- 不直接
new
一个DataSource,而是注入
一个DataSource,这个小小的改动虽然简单,却带来了一系列好处:这相当于是让spring容器创建了一个Bean,使用的时候只是给它赋值而已,并没有new
它。 - IoC又称为依赖注入(DI:Dependency Injection),它解决了一个最主要的问题:将组件的创建+配置与组件的使用相分离,并且,由IoC容器负责管理组件的生命周期。
依赖注入可以通过set()方法实现。依赖注入也可以通过构造方法实现
public class BookService {
private DataSource dataSource;
public BookService(DataSource dataSource) {
this.dataSource = dataSource;
}
}
参考文章使用Interceptor
@Order(1)
@Component
public class LoggerInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle
@Override
public void postHandle
@Override
public void afterCompletion
一个Interceptor必须实现HandlerInterceptor接口,可以选择实现preHandle()、postHandle()和afterCompletion()方法。preHandle()是Controller方法调用前执行,postHandle()是Controller方法正常返回后执行,而afterCompletion()无论Controller方法是否抛异常都会执行,参数ex就是Controller方法抛出的异常(未抛出异常是null)。