一、IOC(Inversion of Control)容器:就是具有依赖注入(Dependncy Injection)功能的容器,是可以创建对象的容器,IOC容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。通常new一个实例,控制权由程序员控制,而"控制反转"是指new实例工作不由程序员来做而是交给Spring容器来做。在Spring中BeanFactory是IOC容器的实际代表者。
1 /* 2 3 @Controller 声明此类一个MVC类,通过与 @RequestMapping 一起使用 4 @Service 声明此类一个业务处理类,通过与 @Transactional 一起使用 5 @Repository 声明此类一个数据库访问类 6 @Component 声明此类一个spring管理的类 7 @Configuration 声明此类是一个配置类 8 9 */
二、AOP(Aspect Oriented Programming) 面向切面编程,通过预编译方式或者运行时刻对目标对象动态地添加功能。
1 /* 2 @Aspect 声明这是一个切面类 3 @Pointcut 切入点 4 Advice:具体的操作,通过注解 @before @around @after @finally 来调用代码 5 */
1、代码演示:
@Component @Aspect public class UserAop { /** * execution() 表达式主体 * 第一个 * 表示返回值得类型 * com.springbootweb.controller 表示AOP所切服务的包名 * 包名后面的 ..表示当前包及子包 * 第二个 * 表示类名 * .*(..) 表示任何方法名,任何参数类型 */ @Pointcut(value = "execution( * com.springbootweb.controller..*.*(..))") public void userPointcut(){ } @Before("userPointcut()") public void userLog(){ HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); System.out.println("url:" + request.getRequestURI()); } }