I need this acct to be singleton for bus1 and bus2 instances and not for entire IOC container. In this way, when a user logs on, bus1 and bus2 will share the same acct. And for another user, a different acct instance has to be created, but shared between bus1 and bus2.
Is this possible in Spring or should i do it programmatically?
Yes, it is possible. In the case of a Prototype getting injected a Singleton, you don't have to do anything. As far as a Prototype being injected into the Singleton. Then you just implement the ApplicationContextAware interface. Then your Singleton will get a reference to the ApplicationContext, and you can just call getBean() on it in your Singleton to get a new Prototype instance.
I think the term "Singleton" is used very loosely here. The fact that you need a new Account object for every user makes it anything but "Singleton". Look into the "Session" or "Request" scope. Session scope will maintain one Account object for the entire HTTP Session and Request scope will create a new Account object for every request.