Hello, Saikat. Thanks, for feedback.
I raised a PR [1] to `ignite-extensions`. You can find description of the new module below(examples can be found at [2]): Module provides the ability to integrate `Ignite` into you spring-boot application with zero(or minimal) configuration. After you add this module as a dependency to your spring-boot application `Ignite` node will be configured and injected into `BeanFactory`. Algorithm to configure `Ignite` is the following: 1. If `IgniteConfiguration` bean exists in the `BeanFactory` it will be used. 2. If `IgniteConfiguration` bean doesn't exist following rules are applied: 2.1. Default `Ignite` configuration created. 2.2. If `IgniteConfigurer` bean exists in `BeanFactory` it will be used to customize `IgniteConfiguration`. If a user wants to set custom SPI instances or similar hardcoded values one should do it with `IgniteConfigurer` implementation. 2.3 Application properties applied to `IgniteConfiguration`. Prefix for the properties is `ignite`. [1] https://github.com/apache/ignite-extensions/pull/6 [2] https://github.com/nizhikov/ignite-spring-boot-autoconfigure-example > 18 янв. 2020 г., в 06:44, Saikat Maitra <saikat.mai...@gmail.com> написал(а): > > Hi Nikolay, > > Thank you for your email. As part of Ignite Extensions migration we are > migrating Ignite Extensions to following repo. > > https://github.com/apache/ignite-extensions > > We have added flink and pub-sub modules and few additional modules are open > in PR. > > You can refer to this PR to see how we are migrating the modules > https://github.com/apache/ignite-extensions/pull/5 > > I wanted to connect and discuss the changes to understand the spring boot > auto configure feature. We currently have an ignite spring module that allows > resource injection capabilities and provides a parser for Spring based xml > configuration files. Can you please review and share if the changes you are > proposing can be added as part of Ignite spring module or it make sense to > make it a separate spring boot auto configure module. > > https://github.com/apache/ignite/tree/master/modules/spring > > Regards, > Saikat > > > > > > > > On Fri, Jan 17, 2020 at 3:12 AM Николай Ижиков <nizhi...@apache.org> wrote: > Tests added. > Please, review. > > Saikat, can you help with this PR [1]? > > I think it should be added as a separate module as we do with the flink > integration. > Can you help me with it? > Do we have some how-to for it? > > [1] https://github.com/apache/ignite/pull/7237 > > > 16 янв. 2020 г., в 16:51, Николай Ижиков <nizhikov....@gmail.com> > > написал(а): > > > > Hello, Denis. > > > > Thanks, for the feedback. > > > > Alexey, it seems, PR is ready to be reviewed, but I need some time(a day or > > two) to write tests. > > You can start with the core code review if you wish. > > > > Here are autoconfigurer requirements: > > > > 1. Start usage of Ignite with minimal(or zero) configuration. > > 2. Configure Ignite configuration properties with the standard spring boot > > application properties. > > 3. Configure Ignite SPI implementation and so on that can’t be configured > > via #2. > > > > After some consultation with the Spring experts from the community(Maxim > > Stepachev thanks for the idea) > > I updated the PR with the logic described below: > > > > 1. To enable Ignite auto-configuration user should add > > `org.apache.ignite:spring-boot-ignite-autoconfigure:2.9.0` to dependencies. > > After it Ignite node will be started during spring-boot application > > startup. > > > > 2. IgniteConfiguration initialization logic: > > > > 2.1 If {@link IgniteConfiguration} bean exists in {@link BeanFactory} it > > will be used for the node start. > > 2.2 If {@link IgniteConfiguration} bean doesn't exist following rules are > > applied: > > * Newly introducer IgniteConfigurer bean will be used to customize an > > empty IgniteConfiguration instance. > > If a user wants to set custom SPI instances or similar hardcoded values > > one should do it IgniteConfigurer implementation. > > > > * Application properties will override config values. Prefix for > > properties names is "ignite». > > > > PS. Similar logic applied for the second module - > > `org.apache.ignite:spring-boot-ignite-client-autoconfigure:2.9.0`. > > It provides the same features but for the autoconfiguration of the > > IgniteClient > > > > > >> 15 янв. 2020 г., в 03:03, Denis Magda <dma...@apache.org> написал(а): > >> > >> Nikolay, > >> > >> Thanks for contributing in this direction! That's one of the gaps on our > >> end and the user community will be certainly thankful once we fill it in. > >> > >> *Alexey Kuznetsov*, as one of the Spring Boot experts, could you spend some > >> time reviewing the changes? > >> > >> As for the extensions/modularization activities, please join Saikat in the > >> discussions ([1] and [2]). He is contributing the foundation and moving our > >> existing integrations to that new repository. The Spring Boot improvements > >> might be moved or, another option, we might add this class to the core? > >> > >> [1] > >> http://apache-ignite-developers.2346864.n4.nabble.com/IGNITE-12361-Migrate-Flume-module-to-ignite-extensions-td45010.html > >> [2] > >> http://apache-ignite-developers.2346864.n4.nabble.com/DISCUSS-Proposal-for-Ignite-Extensions-as-a-separate-Bahir-module-or-Incubator-project-td44064.html > >> > >> - > >> Denis > >> > >> > >> On Sat, Jan 11, 2020 at 10:44 AM Николай Ижиков <nizhi...@apache.org> > >> wrote: > >> > >>> Hello, Igniters. > >>> > >>> During Ignite meetup I took part in there was a request from the users. > >>> They propose to create a custom spring boot autoconfigurer module for > >>> Ignite. > >>> This module should provide a smooth injection of Ignite to any spring-boot > >>> application. > >>> > >>> I've implemented a tiny straightforward prototype of the module [1] > >>> Examples of the usage of integration can be found in the example > >>> application [2] > >>> > >>> For now, the module provides the following features: > >>> > >>> 1. Starts Ignite node and inject it in the spring ApplicationContext if > >>> bean of the type IgniteConfiguration exists in the context. > >>> This can be achieved in two ways: > >>> * create `IgniteConfiguration` from java code [3] > >>> * add `ignite.xml` file to the application context [4] > >>> > >>> 2. Starts IgniteClient instance and injects it int the spring Application > >>> if: > >>> * ClientConfiguration bean exists in the context [5] > >>> * `spring.data.ignite.clientAddresses` exists in the application > >>> properties. [6] > >>> > >>> I have a following questions regards new module: > >>> > >>> 1. We have an extension initiative so where is the right place for the > >>> new module? > >>> 2. Do we have spring experts in the community? What other features for > >>> this autoconfigurer module required? > >>> > >>> [1] https://github.com/apache/ignite/pull/7237/files > >>> [2] https://github.com/nizhikov/ignite-spring-boot-autoconfigure-example > >>> [3] > >>> https://github.com/nizhikov/ignite-spring-boot-autoconfigure-example/tree/master/src/main/java/org/apache/ignite/spring/boot/configfrombean > >>> [4] > >>> https://github.com/nizhikov/ignite-spring-boot-autoconfigure-example/tree/master/src/main/java/org/apache/ignite/spring/boot/configfromfile > >>> [5] > >>> https://github.com/nizhikov/ignite-spring-boot-autoconfigure-example/tree/master/src/main/java/org/apache/ignite/spring/boot/thinclientfrombean > >>> [6] > >>> https://github.com/nizhikov/ignite-spring-boot-autoconfigure-example/tree/master/src/main/java/org/apache/ignite/spring/boot/thinclientfromconfig > >>> > >>> > > >