I guess the easiest way to answer this is that Spring does not mandate a usage pattern at all. You can replace many of the services you get with *EJB* using Spring outside of a container - that is pooling, security and transaction management.
If you need to use other J2EE services like JMS, XA transaction, JNDI or servlets then you are going to need to the appropriate container. Obviously, you don't need a full J2EE container. For instance, I often use just servlets and JMS, which translates to Tomcat and ActiveMQ.
Spring will work happily in both J2EE and J2SE settings.