The Spring application has an interface
public interface UserService {
// ...
}
with the only implementation
Suppose you are implementing a pluggable application. By "pluggable" it is meant that when the application is running, there may be jar-files in the classpath that provide some additional functionality and came from 3rd party sides. It means you do not control them. You do not know how many of them there, you do not know the exact implementations in them.
To provide an entrypoint the application has Plugin
interface:
" A command that creates a scratch buffer. | |
" | |
" A scratch buffer is an unlisted buffer that is not assigned to a file, | |
" and will be wiped out as soon as you're out of it. | |
" | |
" 1. Opens a scratch buffer in a new window. | |
" 2. With a bang (:Scratch!) opens it in the same window. | |
" 3. Accepts arguments (:Scratch ft=javascript). | |
" 4. It auto-completes the arguments. |