@Path(value = "/user")
@Stateless
public class UserService {
@Inject
private UserManager manager;
@Path(value = "/create")
@GET
@Produces(value = MediaType.TEXT_PLAIN)
public String doCreate(@QueryParam(value = "name") String name) {
manager.createUser(name);
return "OK";
}
}
这是用户管理器 impl
public class UserManager {
@PersistenceContext(unitName = "shop")
private EntityManager em;
public void createUser(String name) {
User user = new User();
user.setName(name);
// skip some more initializations
em.persist(user);
}
}
问题是如果我没有将 UserService 标记为 @Stateless 那么管理器字段为空
但是如果我标记@Stateless,我可以注入管理器字段,并且应用程序可以正常工作,因为我可以将数据保存到数据库中
只是想知道,这背后的原因是什么?
这是连接应用程序的首选方式吗?
好吧,我正在考虑将 EntityManager 拉出给生产者,以便可以共享