java注入_java – 如何注入接口实现?

参见英文答案 >

Is @Dependent scope not default in Wildfly?                                    1个

我有以下界面

public interface IMyMapper {}

和实施

public class MyMapper implements IMyMapper {}

现在我想将类MyMapper注入无状态bean:

@Stateless

public class MyService {

@Inject

MyMapper mapper; //

@Inject

IMyMapper mapper; //

}

我的问题是注射不起作用.我得到一个例外:

org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type MyMapper with qualifiers @Default

at injection point [BackedAnnotatedField] @Inject mypackage.MyService.mapper

at mypackage.MyService.mapper(MyService.java:0)

at org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:370)

at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:291)

at org.jboss.weld.bootstrap.Validator.validateGeneralBean(Validator.java:134)

at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:165)

at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:529)

at org.jboss.weld.bootstrap.Validator.validateBeans(Validator.java:515)

at org.jboss.weld.bootstrap.Validator.validateDeployment(Validator.java:490)

at org.jboss.weld.bootstrap.WeldStartup.validateBeans(WeldStartup.java:419)

at org.jboss.weld.bootstrap.WeldBootstrap.validateBeans(WeldBootstrap.java:90)

at org.glassfish.weld.WeldDeployer.event(WeldDeployer.java:225)

at org.glassfish.kernel.event.EventsImpl.send(EventsImpl.java:131)

at org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:328)

at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:496)

at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:219)

at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:491)

at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:539)

at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:535)

at java.security.AccessController.doPrivileged(Native Method)

at javax.security.auth.Subject.doAs(Subject.java:360)

at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:534)

at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:565)

at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:557)

at java.security.AccessController.doPrivileged(Native Method)

at javax.security.auth.Subject.doAs(Subject.java:360)

at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:556)

at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1464)

at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1300(CommandRunnerImpl.java:109)

at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1846)

at org.glassfish.deployment.autodeploy.AutoOperation.run(AutoOperation.java:164)

at org.glassfish.deployment.autodeploy.AutoDeployer.deploy(AutoDeployer.java:597)

at org.glassfish.deployment.autodeploy.AutoDeployer.deployAll(AutoDeployer.java:484)

at org.glassfish.deployment.autodeploy.AutoDeployer.run(AutoDeployer.java:412)

at org.glassfish.deployment.autodeploy.AutoDeployer.run(AutoDeployer.java:403)

at org.glassfish.deployment.autodeploy.AutoDeployService$1.run(AutoDeployService.java:233)

at java.util.TimerThread.mainLoop(Timer.java:555)

at java.util.TimerThread.run(Timer.java:505)

]]

我怎么解决这个问题?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值