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
>> 
>> 

Reply via email to