Giter VIP home page Giter VIP logo

Comments (13)

decebals avatar decebals commented on August 16, 2024 1

After I read again the description of the issue I want too add more clarifications:

Can you show me some example to see how to do that Autowired of a plugin class (extending SpringPlugin) thru Spring Boot?

You cannot. In documentation Autowired is used only to inject extensions.

The idea is to load the plugin without package the plugin in a jar, i have just the plugin in the source code. I want the two ways, load from a jar and load without packaged in jar (is this possible?).

Yes. I use this approach in my projects (but I don't use Spring). I run my application in development from my IDE (IntelliJ). In this mode (development) my application together with all the plugins looks like a regular multi module application.
In production (deployment mode in PF4J - it's the default) I packages the plugins in JARs.

from pf4j-spring.

decebals avatar decebals commented on August 16, 2024 1

OK. Please share the project maybe I have some time to take a look.

from pf4j-spring.

decebals avatar decebals commented on August 16, 2024

But i don't see any example of loading this plugin via @Autowired (in Spring Boot) like you say in the documentation

https://github.com/pf4j/pf4j-spring/blob/master/demo/app/src/main/java/org/pf4j/demo/Greetings.java#L30

from pf4j-spring.

Vikcen avatar Vikcen commented on August 16, 2024

Hello, thanks for answering.

I mean an example of use of this structure public class HelloPlugin extends SpringPlugin written in your example.

How/where i should obtain/instantiate the SpringPlugin in the spring boot application? (i dont see it in the demo)

Greetings.

from pf4j-spring.

decebals avatar decebals commented on August 16, 2024

I don't understand your question, and what you are looking for. Take a look at demo application to see a concrete example. They are some examples/projects available on internet.

How/where i should obtain/instantiate the SpringPlugin in the spring boot application? (i dont see it in the demo)

You don't need to obtain/instantiate the SpringPlugin. You need to obtain only the extensions in your application. A concrete (Spring) plugin is instantiated internally by PF4J. PF4J-Spring is a simple adapter of PF4J for Spring applications.

from pf4j-spring.

Vikcen avatar Vikcen commented on August 16, 2024

So, if i do something like this, i will obtain that HelloPlugin implementation?

PluginManager pluginManager = new SpringPluginManager();
List<PluginWrapper> helloplugins = pluginManager.getPlugins();

Or how can i access to this HelloPlugin?

from pf4j-spring.

decebals avatar decebals commented on August 16, 2024

So, if i do something like this, i will obtain that HelloPlugin implementation?

SpringPlugin plugin = (SpringPlugin) pluginManager.whichPlugin(MyService.class);

where MyService is a class from your plugin.

You can also try with PluginManager#getPlugin(String pluginId) or PluginManager#getStartedPlugins. The result is a PluginWrapper, but you can continue with PluginWrapper#getPlugin to retrieve the concrete plugin instance.

from pf4j-spring.

Vikcen avatar Vikcen commented on August 16, 2024

So, if i do something like this, i will obtain that HelloPlugin implementation?

SpringPlugin plugin = (SpringPlugin) pluginManager.whichPlugin(MyService.class);

where MyService is a class from your plugin.

You can also try with PluginManager#getPlugin(String pluginId) or PluginManager#getStartedPlugins. The result is a PluginWrapper, but you can continue with PluginWrapper#getPlugin to retrieve the concrete plugin instance.

That is not correct, it is:

PluginWrapper plugin = pluginManager.whichPlugin(HelloPlugin.class);

But that doesn't work, it returns null (or with getPlugin also returns null). Debugging it, within the class AbstractPluginManager the map plugins is always empty:

/**
     * A map of plugins this manager is responsible for (the key is the 'pluginId').
     */
    protected Map<String, PluginWrapper> plugins;

So, it is returning always null.

Remember, im testing it without package it in a jar, the plugin (that HelloPlugin referenced in your documetantion) is just in source code of my main app.

from pf4j-spring.

decebals avatar decebals commented on August 16, 2024

Debugging it, within the class AbstractPluginManager the map plugins is always empty

My advice for you is to start with quickstart or/and Spring demo.
Did you started your application in development mode? Are you sure?

I'm sorry but I cannot help you with more information.

from pf4j-spring.

Vikcen avatar Vikcen commented on August 16, 2024

I have the project in GitLab, could i share with you? and then you can test it and see what things are wrong or not compatible? the main app is Spring boot (last version)

from pf4j-spring.

Vikcen avatar Vikcen commented on August 16, 2024

Could you give me permissions to push a new branch (issue/37) , i have cloned this:
https://github.com/pf4j/pf4j-spring.git

from pf4j-spring.

Vikcen avatar Vikcen commented on August 16, 2024

I did a push to master. For running the test:

  • For building project pf4j-spring-boot-demo:
    - 1) mvn clean install -Pmain-build
    - 2) mvn clean install -Pjar-client-build
    Then build project pf4j-spring-boot-demo-jar-plugins:
    - 3) mvn clean install

  • For running the demo test, run the spring boot app: org.pf4j.demo.boot.MainApp in pf4j-spring-boot-demo project.

I hope this can help.

from pf4j-spring.

decebals avatar decebals commented on August 16, 2024

@Vikcen What is the status of this issue? Can we close it?

from pf4j-spring.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.