← 输入框|github.com|刷新
Skip to content

Decide whether to switch to Spring #55

Open

Description

@ctrueden

We need to seriously explore whether Spring is usable as a replacement for the current application container / dependency injection / plugin mechanisms. As part of that, we'd like to know whether there is a dependency-free way (e.g. XML?) to declare implementations of interfaces, without depending on the artifact containing those interfaces. This would be useful for imglib2-algorithm to declare ops without depending on a theoretical lightweight scijava-ops-api module.

Activity

  1. added this to the 1.0.0 milestone on Apr 29, 2021
  2. hinerm commented on Jul 19, 2021

    @hinerm
    Member

    As part of that, we'd like to know whether there is a dependency-free way (e.g. XML?) to declare implementations of interfaces

    You can definitely declare interface implementations via XML. See creating beans, for example.

  3. hinerm commented on Jul 19, 2021

    @hinerm
    Member

    We need to seriously explore whether Spring is usable as a replacement for the current application container / dependency injection / plugin mechanisms.

    How are we defining "usable"? Are there any particular use-cases of the SciJava Context that go beyond IoC/DI that need to verify have an analog in Spring? Otherwise the only showstoppers to adoption that come to my mind:

    • Application size (a bare-bones spring boot app has 29MB of deps so I think no problem there)
    • License (Apache 2.0, no problem)
    • Application startup time impact (this does need to be tested to know scan time of a Fiji classpath)

    Otherwise I think this issue is mostly about:

    1. Determining a migration path
    2. Estimating the time to apply that migration path to all our projects (if necessary - it may be possible to just tell Spring how to suck in the SciJava @Plugin interface)
    3. Decide if we have enough bandwidth for the migration
  4. hinerm commented on Jul 19, 2021

    @hinerm
    Member

    For more info, see IoC mechanisms in spring.

    Basically you get:

    • XML
    • Annotations
    • "Java-based" with @Configuration

    I believe these can all safely co-exist with each other.

  5. modified the milestones: 1.0.0, unscheduled on Feb 18, 2022
  6. added a commit that references this issue on May 2, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions