晚上睡不着觉看自定义评论,记录学习过程
见https://blog.csdn.net/QQ _ 37435078/article/details/90523309
自定义注释其实是使用springAop实现的()
试图创建自定义注释并将注释值输出到控制台
实现步骤如下
开始
1 .定义评论类
2 .定义用于“实现”此注释的java类(类似于接口和实现类) )。
3 .定义用于测试注释的控制器、服务和实体
结束
将注释代码定义如下
@ documented @ retention (retention policy.runtime ) target ) elementtype.method ) public @ interfaces log { string value } @Retention :注释的生命周期表示注释将保留在哪个阶段,并允许您选择编译阶段、类加载阶段或运行阶段@Target :注释工作的位置。 ElementType.METHOD表示只有在将注释应用于方法后才能工作
@ restcontrollerpublicclassusercontroller (@ slog )“我是日志”) request mapping (“user”) public void TestAspect ) }
定义注释切片类
请注意,必须将jar包添加到名为@Aspect的注释中。 也就是说,必须向pom文件中添加依赖关系。 如下所示。
ependencygroupidorg.spring framework.boot/groupidartifactidspring-boot-starter-AOP/artifactidscopetest/scope/可以在groupidartifactidaspectjweaver/artifact id/dependency之后正常添加。
@ component @ aspectpublicclassslogaspect { @ pointcut (' @ annotation (com.example.demo.annotation.slog ) ) } } privaation @annotation(logger ) ) publicvoidadvice ) joinpointjoinpoint,Slog logger ) ) system.out.println logger }
其中,@Pointcut注释用于定义切口,即切入标记有Slog注释的方法
@Before的pointcut ) )在该切口执行前后(前、后、包装等)进行逻辑处理,在@annotation ) logger )中自定义注释对象赋予的值,即@Slog
然后,重新启动项目(添加注释或修改注释实现,然后必须重新启动才能使注释生效)。
可以查看控制台上输出的日志
2020-12-2802336034336031.601 info 3520---[ nio-8080-exec-1 ] o.a.c.c.[ Tomcat ].[ localhost ].[
2020-12-2802336034336031.602 info 3520---[ nio-8080-exec-1 ] o.s.web.servlet.dispatcher servlet 3360 inititition
2020-12-2802336034336031.602 info 3520---[ nio-8080-exec-1 ] o.s.web.servlet.dispatcher servlet 3360 compler
我是日志