spring-projects / spring-plugin

Apache License 2.0
444 stars 119 forks source link

Spring MVC #43

Closed sergioliveira closed 7 years ago

sergioliveira commented 7 years ago

Is it possible to use this framework with spring mvc to create a modular webapp?

schauder commented 7 years ago

I would argue that many people build modular web apps with Spring MVC without any additional libraries. With "modular" I mean: consisting of pieces that can be understood and implemented to a large degree, without knowing about and understanding the complete application.

This framework is about extensibility: The ability to change the behavior of an application, by adding and removing stuff. Just as (but not as elaborated) a modern IDE where you get some basic behavior out of the box and then can you can add plugins to add the features you want.

I'm not sure if you made such a strict distinction in your question. In any case, the correct answer is yes you can certainly do that. But the probably more helpful answer is:

What exactly do you want to achieve?

sergioliveira commented 7 years ago

My idea was to have a base webapp that took care of all the cross-cutting concerns and then extend it with plugins. Those plugins would be and archive with controllers and views that I would drop in a folder and they would became available in the base webapp

I'm new to web development with Spring and with Java. I've read about Spring DM, but it is not available in Spring 4. I've tried with Equinox and Apache Felix but with little success.

MichalHecko commented 7 years ago

I've made several Spring MVC and SpringBoot web apps using spring-plugin as a framework for extendability - as a plugin framework.

I was looking for something alike Spring DM but not so complex like OSGI. Everything you mentioned is posible with spring-plugin library.

In my webapps I define some "extension points" where specifics plugin take care of some application login. For example - validation of forms is handled by specifics plugin which is developed for specifics customer,cause they have specufics requirements or there is some intergrations.

But if you are thinking about something like you want to extend some GUI behavious - it is also posible but you have to implement some logic in GUI which will use specifics plugin for example as a definition. See atlassian plugin framework as an inspiration.

schauder commented 7 years ago

Closing this issue, since the question is answered. Thanks @MichalHecko