簡體   English   中英

澤西島配置無法識別服務和dao類

[英]Jersey Configuration Not identifying service and dao classes

這是我的球衣配置類

@ApplicationPath("services")
    public class JerseyApplication extends ResourceConfig{
    public JerseyApplication() {

            packages("com.ems");

            register(EmployeeService.class);
        }
    }

這里的employeeService autowiring給出了一個空指針異常

@Path("/ems")
@Component
public class EmployeeRestController {

    @Autowired
    private EmployeeService employeeService;

    @GET
    @Path("/employees")
    @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
    public List<Employee> getEmployees() {
        return employeeService.getEmployees();
    }
}

我已經嘗試了所有操作在我的employeeServiceImpl我有@service注釋仍然無法正常工作。

要使用內置的DI框架(HK2)配置依賴項注入,您應該使用AbstractBinder ,如在Jersey 2.0的依賴項注入中的一些回答中所述。

@ApplicationPath("services")
public class JerseyApplication extends ResourceConfig {

    public JerseyApplication() {

        packages("com.ems");

        register(new AbstractBinder() {
            @Override
            protected void configure() {
                bind(EmployeeService.class)
                        .to(EmployeeService.class)
                        .in(Singleton.class);
            }
        });
    }
}

其次,您不使用@Autowired批注。 該批注專門用於Spring。 對於使用Jersey進行標准注入,只需使用@Inject批注。 還要刪除@Component注釋,因為這也適用於Spring。

順便說一句,如果您確實想將Spring與Jersey集成在一起,則應該閱讀為什么和如何將Spring與Jersey一起使用 它將分解您需要了解的有關集成兩個框架的知識。

您應該注冊控制器而不是服務類。 樣品

@ApplicationPath("services")
    public class JerseyApplication extends ResourceConfig{
    public JerseyApplication() {

            packages("com.ems");

            register(EmployeeRestController.class);
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM