Managed classes are managed (hence the name!) by the application server. Session Beans are managed objects, as they are created, pooled and destoyed on demand by the app server. The app server can use DI to inject other managed objects, e.g. another session bean. If you have a property which is not a managed object, the app server does not know about anything and cannot use DI.