스프링의 대안
스프링의 대안을 논의하기 어려운 이유는 이를 전체 생태계의 대안으로 오해할 수 있기 때문이다. 그렇지만 스프링 생태계를 구성하는 많은 개별 구성 요소 및 프로젝트에 대해 오픈 소스나 상용 프레임워크 및 라이브러리 같은 다른 대안을 찾을 수 있다.
예를 들어 스프링 IoC 컨테이너의 경우 몇 년 전 자바 EE 명세(specification)는 개발자들에게 매우 인정받는 솔루션이었다. 다소 사상이 다른 자바 EE(2017년에 자카르타 EE(https://jakarta.ee/)에서 오픈 소스로 재작성)는 컨텍스트와 의존성 주입(Context and Dependency Injection, CDI) 또는 EJB(Enterprise Java Beans) 같은 명세를 제공했다. CDI 또는 EJB를 사용하여 객체 인스턴스의 컨텍스트를 관리하고 애스펙트(aspects: EE 용어에서는 ‘인터셉터(interceptors)’라고 함)를 구현할 수 있었다. 또 구글 쥬스(Guice, https://github.com/google/guice)는 컨테이너의 객체 인스턴스 관리를 위한 프레임워크로 인정받았다.
개별적으로 수행된 일부 프로젝트에는 여러 대안이 가능하다. 예를 들어 스프링 시큐리티(Spring Security) 대신 아파치 시로(Apache Shiro, https://shiro.apache.org/)를 사용할 수 있다. 또는 웹 앱을 구현하는 데 스프링 MVC와 스프링 관련 기술 대신 플레이(Play) 프레임워크(https://www.playframework.com/)를 선택할 수 있다.