Spring boot hot swapping

Hot swapping is a productive feature for your development, which helps to reload classes automatically without restarting container.

The only setting is to add below into your pom.xml, as it is said here.


Applications that use spring-boot-devtools will automatically restart whenever files on the classpath change.


  1. mvn spring-boot:run & to launch your application background.
  2. edit a java file in vim and save it.

    Nothing happens?!

    Don’t panic, that’s right, spring-boot-devtools watches only files on the classpath as mentioned above. The last step is to build your java source file to propagate changes to classpath such as target/classes.

  3. mvn compile

    You could see your application automatically restarted. If you’are using IDE, this step could be mitigated by enabling automatic build.

As a vim user, I don’t use IDE even when coding with Java, here is the way I facilitate quick build from vim.

Add below into your ~/.vim/ftplugin/java.vim.

function! SearchFileBackwards(fn)
    let fp = expand('%:p')
    let pos = len(fp) - 1
    while pos > 0
        let pom = ""
        if fp[pos] == '/'
            let pom = strpart(fp, 0, pos + 1) . a:fn
            if filereadable(pom)
        let pos = pos - 1
    return pom

function! BuildMavenProject()
    let pom = SearchFileBackwards("pom.xml")
    if pom != ""
        exec '!mvn -f '.SearchFileBackwards("pom.xml").' compile'
        echohl WarningMsg | echo "No pom.xml found." | echohl None

" comment out below line to enable automatic build on maven project.
" autocmd BufWritePost *.java :call BuildMavenProject()

" Press <F8> to build current maven project.
nnoremap <buffer> <silent> <F8> :call BuildMavenProject()<CR>