List of Core/common GoF / J2EE Design Patterns which are internally used by Spring / based upon:
1. MVC - The advantage with Spring MVC is that your controllers are POJOs as opposed to being servlets. This makes for easier testing of controllers.
2. Front controller - Spring provides "DispatcherServlet" to ensure an incoming request gets dispatched to your controllers.
3. View Helper - Spring has a number of custom JSP tags, and velocity macros, to assist in separating code from presentation in views.
4. Singleton - Beans defined in spring config files are singletons by default.
5. Prototype - Instance type can be prototype.
6. Factory - Used for loading beans through BeanFactory and Application context.
7. Builder - Spring provides programmatic means of constructing BeanDefinitions using the builder pattern through Class "BeanDefinitionBuilder".
8. Template - Used extensively to deal with boilerplate repeated code (such as closing connections cleanly, etc..). For example JdbcTemplate.
9. Proxy - Used in AOP & Remoting.
10. DI/IOC - It is central to the whole BeanFactory/ApplicationContext stuff.