The Subject.Builder doesn't require a thread-bound or static
SecurityManager. It just uses those locations as fallbacks if you
don't specify the SecurityManager yourself.
If you have control over how the SecurityManager is accessed, it is
often better to specify it yourself when using the Subject.Builder.
For example, you can get the SecurityManager from your Spring config:
SecurityManager sm = applicationContext.getBean("securityManager");
Subject subject = new Subject.Builder(sm)....buildSubject();
subject.execute( ... );
HTH,
Les