pf4j-spring compatibility with Spring Boot
See original GitHub issueHello, i hope i can get some help.
I have tested successfully in my Spring Boot web application, loading plugins and getting my extensions from the plugin packaged in a jar like in your documentation shows in this way:
FileSystem sistemaFicheros = FileSystems.getDefault();
PluginManager pluginManager = new SpringPluginManager(sistemaFicheros.getPath("/home/vbravo/Escritorio/plugins"));
pluginManager.loadPlugins();
List<Converter> converters = pluginManager.getExtensions(Converter.class);
for (Converter zipToPdfConversion : converters) {
zipToPdfConversion.getConversionType();
}
But i don’t see any example of loading this plugin via @Autowired (in Spring Boot) like you say in the documentation:
Ready, your extension is available in your application via PluginManager or Spring Autowire.
I don’t understand very well what you mean exactly with Autowired, Do you mean i could load the plugin in this way as attribute of a class in a Spring Boot context?
@Autowired
Converter zipToPdfConversion;
Where Converter zipToPdfConversion is implemented in the same form of your documentation:
public class HelloPlugin extends SpringPlugin {
public HelloPlugin(PluginWrapper wrapper) {
super(wrapper);
}
@Override
public void start() {
System.out.println("HelloPlugin.start()");
}
@Override
public void stop() {
System.out.println("HelloPlugin.stop()");
super.stop(); // to close applicationContext
}
@Override
protected ApplicationContext createApplicationContext() {
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();
applicationContext.setClassLoader(getWrapper().getPluginClassLoader());
applicationContext.register(SpringConfiguration.class);
applicationContext.refresh();
return applicationContext;
}
@Extension
public static class HelloGreeting implements Greeting {
@Autowired
private MessageProvider messageProvider;
@Override
public String getGreeting() {
// return "Hello";
// complicate a little bit the code
return messageProvider.getMessage();
}
}
}
Can you show me some example to see how to do that Autowired of a plugin class (extending SpringPlugin) thru Spring Boot?
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?).
Thank you, greetings.
Issue Analytics
- State:
- Created 4 years ago
- Comments:13 (7 by maintainers)
Top Related StackOverflow Question
OK. Please share the project maybe I have some time to take a look.
After I read again the description of the issue I want too add more clarifications:
You cannot. In documentation
Autowiredis used only to inject extensions.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 (
deploymentmode in PF4J - it’s the default) I packages the plugins in JARs.