日志级别有哪些
- debug 、info 、warning 、error 、critical。默认的是WARNING,当在WARNING或之上时才被跟踪。
Spring优缺点
-
优点:
-
方便解耦,简化开发
-
IOC :集中管理对象,对象和对象之间的耦合度降低,方便维护对象。
-
AOP:再不修改代码的情况下可以对业务代码进行增强,减少重复代码,提高开发效率,维护方便。
-
声明事物的支持:提高开发效率,只需要一个事物注解@Transactional
-
方便程序的测试:Junit springMvc
-
集成的框架:非常强大的粘合度,集成能力强。只需简单的配置即可,降低APi的使用难度,简化开发。
-
底层源码:反射,设计模式。提供拓展接口供使用。
-
-
缺点:
- 门槛较高,入门spring 需要较长的时间。
SpringIOC、AOP是什么 用过吗
- IOC(控制反转)就是将程序中原来 new 对象,交给spring创建,从spring工厂获取对象,使用spring来负责控制对象的生命周期和对象间的关系
- DI(依赖注入),比如@Autowried注解,IOC的具体实现
- AOP(面向切面),是面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。是OOP的延续
- 作用:在程序运行期间,在不修改源码的基础上对方法进行功能增强。
- 优势:减少重复代码,提高开发效率,并且便于维护。
@Component
@Aspect
public class RequestAspect {
@Pointcut("execution(* com.example.demo.controller.helloController.hello(java.lang.String))")
public void pointCut() {
}
@Before("pointCut()")
public void before(JoinPoint joinPoint) {
Optional<Object> any = Arrays.stream(joinPoint.getArgs()).findAny();
System.out.println("前置通知" + any.toString());
}
@After("pointCut()")
public void after() {
System.out.println("后置通知");
}
@AfterReturning(returning = "obj", pointcut = "pointCut()")
public Object retu(Object obj) {
System.out.println("返回通知" + obj);
return obj;
}
@AfterThrowing("pointCut()")
public void throwException(){
System.out.println("异常通知");
}
@Around("pointCut()")
public void around(ProceedingJoinPoint joinPoint){
System.out.println("环绕通知");
}
}