如何解决如何设置Spring Boot以对组件进行计量,而无需在每个类中添加@Timed而是指定已使用的注释,例如@Service
我有一个Spring Boot应用程序,其中充满了端点(即@Controller
)和@Service
,后面是@Repository
。我想让所有这些人将定时指标导出到Micrometer。在某些时候,我也想全部禁用它们。在某些时候,例如,我需要计量@Service
标记的类的所有方法或计量@Repository
的时间。因此,我不希望已经保留@Service
注释的所有类都插入@Timed
并已被删除,并且我不得不考虑如何使用用于存储库的Spring Data接口来做到这一点。
我应该设置哪种类型的豆子来使MeterRegistry
考虑到所有带有@RestController
标签的代码已经带有@Timed
注释,以使此配置易于打开和关闭。属性?我知道,对于传入的HTTP请求management.metrics.web.server.request.autotime.enabled=true
来说,这将有助于获取传入的HTTP请求的时间,这将对我有用。
但是,如果可能的话,我可能同样希望将其应用于服务和存储库层。但是,除了@Service
标注之外,没有其他方法来标识实际的服务。因此,由于我不想在此处显式添加@Timed
,可以进行哪种设置以使MeterRegistry
考虑标记为@Service
的类和任何Spring Data存储库中的任何方法该应用程序?
解决方法
它没有现成的解决方案,但是您可以自己实现,例如,使用Spring AOP。
您可以查看TimedAspect源代码,尤其是在@Around
注释的@Timed
方面,并为@Service
或@Repository
重新创建它。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。