繁体   English   中英

泽西岛没有注入我的CDI豆

[英]Jersey not inject my CDI beans

我的@Inject不能与我的Web服务(@Path)一起使用,但是可以与@WebServlet一起使用,为什么?

我的网络服务

@Path("/autenticacao")
public class UsuarioService {

    @Inject
    private UsuarioRepository usuarioRepository;

    @POST
    @Produces(MediaType.APPLICATION_JSON)
    public Response autentica(@FormParam(value = "cpf") String cpf, @FormParam(value = "senha") String senha){
        Usuario usuario = usuarioRepository.getUsuarioByCPFSenha(cpf, senha);
        return Response.status(200).entity(usuario).build();
    }

}

UsuarioRepository接口的定义

public interface UsuarioRepository {

    public Usuario getUsuarioByCPFSenha(String cpf, String senha);

}

我对UsuarioRepository接口的实现

public class UsuarioRepositoryImp implements UsuarioRepository {

    @Inject
    private Connection connection;

    @Override
    public Usuario getUsuarioByCPFSenha(String cpf, String senha) {
        String SQL = "SELECT se01_cpf, se01_senha FROM se01_usuario WHERE replace(replace(se01_cpf,'.',''),'-','') = ? AND se01_senha = ?";

        Usuario usuario = null;

        try {
            PreparedStatement stmt = connection.prepareStatement(SQL);
            stmt.setString(1, cpf);
            stmt.setString(2, senha);

            ResultSet set = stmt.executeQuery();

            while(set.next()){
                String c = set.getString("se01_cpf");
                String s = set.getString("se01_senha");

                usuario = new Usuario(c, s);
            }

            set.close();
            stmt.close();

        } catch (SQLException e) {
            throw new RuntimeException(e);
        }

        return usuario;
    }

}

请求后我的字段usuarioRepository为空,有什么想法吗?

泽西岛依赖项注入基于HK2而不是CDI。 因此,您需要在两者之间架起一座桥梁。 这是jersey-gf-cdi的用途:

<dependency>
    <groupId>org.glassfish.jersey.containers.glassfish</groupId>
    <artifactId>jersey-gf-cdi</artifactId>
</dependency>

您只需要在类路径中包含该JAR。 您可以在此处查看Jetty的配置: https//github.com/astefanutti/cdeye/blob/cd6d31203bdd17262aab12d992e2a730c4f8fdbd/webapp/pom.xml

以下是将CDI bean注入JAX-RS资源的示例: https : //github.com/astefanutti/cdeye/blob/cd6d31203bdd17262aab12d992e2a730c4f8fdbd/webapp/src/main/java/io/astefanutti/cdeye/web/BeansResource.java

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM