Hi Nikolay, Thank you for updating the PR, the changes looks good.
Regards, Saikat On Wed, Jan 22, 2020 at 1:33 PM Николай Ижиков <nizhi...@apache.org> wrote: > Hello, Saikat. > > Thank you so much for the review. > > I answered your questions and resolve all the comments. > Please, take a look, one more time. > > > 22 янв. 2020 г., в 07:58, Saikat Maitra <saikat.mai...@gmail.com> > написал(а): > > > > Hi Nikolay, > > > > I have reviewed the PR and shared comments. > > > > Please let me know if you have any feedback. > > > > Regards, > > Saikat > > > > On Mon, Jan 20, 2020 at 2:42 PM Николай Ижиков <nizhi...@apache.org> > wrote: > > > >> 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 > >>>>>> > >>>>>> > >>>> > >>> > >> > >> > >