In my organization, I belong to the software development department as part of the Java application team (comprising 20-25 people) and we use various tools related to Java development, including Spring MVC, in our work. Our primary use of Spring involves the development of web applications which are accessed through a browser.
The Spring framework has many modules that we use for our in-house development and each of them are integrated with each other. For example, we use Spring Hibernate integration as well as Spring JPA, among others. It's not a one-size-fits-all solution that Spring provides in the sense that we have to use several additional modules under the Spring umbrella.
We are not currently using the latest version of Spring even for newer applications due to the limitations imposed by the various platforms that we run. Some versions of Spring are only supported by certain versions of Java, and we also have legacy applications which require the use of older versions.
As for our infrastructure, everything is private and we are not on the cloud right now.
When we shifted from our legacy frameworks to the Spring framework, we discovered that Spring definitely made our development easier. One good example is that there is a lot of boiler plate code available that you don't have to write from scratch, making the development of web applications a much simpler process.
The newer versions of Spring MVC have released a lot of features that we are not using right now because, in many cases, we are limited to running older versions. As such, it would be nice if Spring were to improve support for upgrading to newer versions, especially for legacy applications.
We have been using Spring MVC for almost ten years.
It's a very stable solution.
Spring has excellent community support, not least because it's an open source framework. Its community is very vibrant and the software is used by a large number of developers. So for almost all the issues you might encounter, it's easy to find a solution on the Internet.
As compared to other frameworks, Spring is a moderate level framework and the deployment is not dependent on Spring itself, but rather it is dependent on the platform that you are using.
The main factors for setting up Spring MVC are how we go about packaging our application and where we intend to deploy it. By itself, Spring MVC is not part of the deployment process for our applications. It's a development framework and not a deployment framework, and so the deployment depends on which platform we use. Currently, we are using the Oracle WebLogic platform for deployment, and our deployment model is a very formal process. For local development and deployment, we deploy it ourselves in-house, but for deployments on staging or production servers, it is done by a different team and they take their own time and use their own methods to deploy Spring.
Spring MVC is open source and free.
Speaking from our own experience, Spring MVC has been one of the easiest frameworks to adopt. This is largely because Spring is based on the same MVC pattern as our legacy approaches to web application development and it has been a natural progression for us.
Before adopting anything, you first need to know your requirements and then you need to read up about it (e.g. check the Internet). The same applies with Spring MVC. You should only adopt it if it suits your requirements. However, if you do decide to go with Spring, I can assure you that you won't regret it. It's a very good framework.
I would rate Spring MVC a nine out of ten.