![](/img/trans.png)
[英]No bean is eligible for injection to the injection point[JSR-365 5.2.2]
[英]No bean is eligible for injection to the injection point [JSR-299 §5.2.1]
我想注入默認的Java記錄器。 然而,Eclipse強調它並指出“沒有bean有資格注入注射點[JSR-299§5.2.1]”
如果我仍然部署,則拋出以下異常。 為什么它無法注入Java Logger? 對於EntityManager也是如此,但對於我自己的UserRepository Bean則不行。
org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied dependencies for type [Logger] with qualifiers [@Default] at injection point [[field]
碼:
import java.util.logging.Logger;
import javax.ejb.Stateless;
import javax.enterprise.event.Event;
import javax.inject.Inject;
import javax.persistence.EntityManager;
import com.terry.webapp.data.UserRepository;
import com.terry.webapp.model.usermgmt.User;
// The @Stateless annotation eliminates the need for manual transaction demarcation
@Stateless
public class LoginService {
@Inject
private Logger log;
@Inject
private EntityManager em;
@Inject
private UserRepository repository;
public User login(User user) {
log.info("login " + user.getUsername());
User rUser = repository.findByCredentials(user.getUsername(), user.getPassword());
return rUser;
}
}
要注入一個記錄器,你需要一個生成器方法,它給出了一個可以注入的Logger
。
import java.util.logging.Logger;
import javax.enterprise.inject.Produces;
import javax.enterprise.inject.spi.InjectionPoint;
public class LoggerProduer {
@Produces
public Logger produceLog(InjectionPoint injectionPoint) {
return Logger.getLogger(injectionPoint.getMember().getDeclaringClass()
.getName());
}
}
並且需要使用@PersistenceContext(unitName="pscontext")
注入EntityManager
,因為它是使用persistence.xml
數據創建的,因此您的EntityManager
必須是
@PersistenceContex(unitName="pscontext")
private EntityManager em;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.