SpringBoot实现注解的属性动态注入。以ElasticSearch的java查询的indexName为例

这篇具有很好参考价值的文章主要介绍了SpringBoot实现注解的属性动态注入。以ElasticSearch的java查询的indexName为例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景

最近接了个需求,需要每天从ElasticSearch(下称es)中取出数据然后持久化到mysql数据库里,而我们项目的es里的数据都是以日期作为index来存储的,那么就需要用程序每天定时进行拉取。我们用springboot的spring-boot-starter-data-elasticsearch(类似mybatis的框架)进行数据CRUD时需要为实体(entity)配置需要查询的index,配置方式为:

@Document(indexName = "xxxx-xx-xx")

那么就需要通过动态的方式每天根据日期生成indexName然后注入到@Document注解里。

本文章主要以SpringBoot的提供java查询ElasticSearch数据的样例为例子,给出一种可以动态的为注解的属性注入值得方式,下面展示下主要代码。

配置文件:conf.properties

这是用来动态存储需要注入的数据的配置文件,我们可以通过已有的一些操作properties文件的方法对该文件进行操作。

index.currentDay=2022.08.19
index.nextDay=2022.08.20

配置文件载入类:PropertyConfig.java

@Configuration
@PropertySource(value={"classpath:conf/conf.properties"})//配置文件的相对位置,根据自己实际情况设置
public class PropertyConfig {

    @Value("${index.currentDay}")//从conf.properties里注入
    private String currentDay;

    @Value("${index.nextDay}")//从conf.properties里注入
    private String nextDay;

    @Bean
    public String currentDay() {
        return currentDay;//标记一,注意,下面会有需要回来查看这里
    }
    @Bean
    public String nextDay() {
        return nextDay;
    }
}

实体类:EsNetMessage.java

@Data
@NoArgsConstructor
@AllArgsConstructor
@Document(indexName = "#{@currentDay}")//注意,此处大括号里与上面配置文件载入类代码片段中“标记一”处的方法名相同
public class EsNetMessage {
//下面的跟本博客无关
    @Id
    @Field(type = FieldType.Text)
    public String id;

    @Field(type = FieldType.Date,name = "@timestamp")
    public String timestamp;

    @Field(type = FieldType.Text)
    public String message;
}

注入流程

conf.properties 中的properties ====> PropertyConfig.java中的成员变量 ====> EsNetMessage.java 中@Document注解里的indexName。文章来源地址https://www.toymoban.com/news/detail-403397.html

到了这里,关于SpringBoot实现注解的属性动态注入。以ElasticSearch的java查询的indexName为例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • SpringBoot3中的属性绑定注解和YMAL配置文件、日志

    SpringBoot摒弃XML配置方式,改为 全注解驱动 1. 组件注册 @Configuration 、 @SpringBootConfiguration @Bean 、 @Scope @Controller 、 @Service 、 @Repository 、 @Component @Import @ComponentScan 步骤: 1、@Configuration 编写一个配置类 2、在配置类中,自定义方法给容器中注册组件。配合@Bean 3、或使用@Import

    2024年02月11日
    浏览(7)
  • 关于在 springboot 中使用 @Autowired 注解来对 TemplateEngine 进行自动装配时,无法注入的问题。

    关于在 springboot 中使用 @Autowired 注解来对 TemplateEngine 进行自动装配时,无法注入的问题。

    本文是基于江南一点雨的 Spring Boot+Vue 系列视频教程第 三 章的第三节,详情参考Spring Boot+Vue系列视频教程 在观看学习这一节时,发现当进行手动渲染 Thymeleaf 模板时,通过 @Autowired 注解来对 TemplateEngine 进行自动装配时,发现 idea 对其显示 No beans of \\\'TemplateEngine \\\' type of found。

    2024年02月02日
    浏览(9)
  • SpringBoot根据注解动态执行类中的方法

    有一个接口提供了xx的服务,有两个场景分别实现了xx的具体逻辑,标记为xx1和xx2。 然后场景一过来的时候执行xx1逻辑,场景二过来的时候执行xx2逻辑。 定义一个service层,提供xx的接口。 然后定义两个serviceImpl,@Service(name=\\\"\\\")标记不同的名称,分别提供xx的具体实现。 在使用

    2024年02月14日
    浏览(8)
  • Java实战:SpringBoot+ElasticSearch 实现模糊查询

    本文将详细介绍如何使用SpringBoot整合ElasticSearch,实现模糊查询、批量CRUD、排序、分页和高亮功能。我们将深入探讨ElasticSearch的相关概念和技术细节,以及如何使用SpringData Elasticsearch库简化开发过程。 ElasticSearch是一个基于Lucene构建的开源搜索引擎,它提供了一个分布式、多

    2024年04月25日
    浏览(9)
  • Spring-2-深入理解Spring 注解依赖注入(DI):简化Java应用程序开发

    Spring-2-深入理解Spring 注解依赖注入(DI):简化Java应用程序开发

      掌握纯注解开发依赖注入(DI)模式 学习使用纯注解进行第三方Bean注入 问题导入 思考:如何使用注解方式将Bean对象注入到类中 1.1 使用@Autowired注解开启自动装配模式(按类型) 说明:不管是使用配置文件还是配置类,都必须进行对应的Spring注解包扫描才可以使用。@Autowired默

    2024年02月14日
    浏览(15)
  • 【Java】后端开发语言Java和C#,两者对比注解和属性的区别以及作用

    【Java】后端开发语言Java和C#,两者对比注解和属性的区别以及作用

    欢迎来到《小5讲堂》 大家好,我是全栈小5。 这是《Java》序列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识点的理解和掌握。 温馨提示:博主能力有限,理解水平有限

    2024年01月16日
    浏览(11)
  • SpringBoot整合Druid数据库连接池&多数据源&注解切换&动态添加

    配置好之后 Druid 会通过 DruidDataSourceAutoConfigure 自动装配 属性配置 数据源枚举 动态数据源 继承 AbstractRoutingDataSource 就可以实现动态数据源了 实现了一个动态数据源类的构造方法,主要是为了设置默认数据源,以及以Map保存的各种目标数据源。其中Map的key是设置的数据源名称

    2024年03月22日
    浏览(17)
  • 【JAVA】单元测试、反射、注解、动态代理

    @Test 测试方法 @Before 用来修饰实例方法,该方法会在每一个测试方法执行之前执行一次。 @After 用来修饰实例方法,该方法会在每一个测试方法执行之后执行一次。 @Before Class 用来静态修饰方法,该方法会在所有测试方法之前只执行一次。 @After Class 用来静态修饰方法,该方法

    2024年02月11日
    浏览(7)
  • Es elasticsearch 二十 站内搜索示例 高亮内容 java springboot 实现

    目录 实现思路 代码 全依赖 参数对象 搜索实现代码全代码 日志 重点 权重 分页 入参高亮数据处理 返回出参数据处理 构建请求 请求体设置搜索字段 返回数据解析获取高亮 高亮通过设置标签和class  前端设置class字体颜色 也可直接写在后端   全依赖 参数对象 搜索实现代码

    2024年02月02日
    浏览(11)
  • 【业务功能篇20】Springboot java逻辑实现动态行转列需求

    【业务功能篇20】Springboot java逻辑实现动态行转列需求

    在此前,我也写过一个行转列的文章,是用存储过程sql处理的一个动态的逻辑 Mysql 存储过程Mybatis框架call调用 实现动态行转列 那么后面我们同样又接收了业务的一个新需求,针对的是不同的业务数据,做的同样的一个展示数据报表,同样还是产品归属信息表头,拼接查询年

    2024年02月09日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包