我想从pojo类访问@Resource,但我不能。我总是得到NullPointer。我使用的是Spring Boot框架,1.4.2.RELEASE版本。
有可能吗?这是我的代码的一部分:
@Service
public class CvFacade implements Cvitae{
@Resource
private CvRepository cvDao;
//....
}
public interface CvRepository extends CrudRepository<Cv, Long>{
@Query("select c from Cv c where c.idiom = :idiom")
public List<Cv> listarCv(@Param("idiom") EnumIdiom idiom);
@Query("select c from Person c where c.idPerson=1")
public List<Person> listarPerson();
}
我的申请:
@SpringBootApplication(scanBasePackages = { "com.xxxxxx.cv.controller","com.xxxxxx.cv.facade","com.xxxxxx.cv.repository"})
@EnableJpaRepositories(basePackages = {"com.xxxxxx.cv.repository"}, entityManagerFactoryRef = "emf")
@PropertySource(value = { "classpath:application.properties" })
@EnableAutoConfiguration(exclude = { DataSourceAutoConfiguration.class })
public class Application extends SpringBootServletInitializer {
//...
}
答案 0 :(得分:0)
您的CvRepository接口应注释为Repository:
@Repository
public interface CvRepository extends CrudRepository<Cv, Long>{
@Query("select c from Cv c where c.idiom = :idiom")
public List<Cv> listarCv(@Param("idiom") EnumIdiom idiom);
@Query("select c from Person c where c.idPerson=1")
public List<Person> listarPerson();
}
这会将CvRepository暴露给Spring上下文,使其可以注入到您的CvFacade类中。
答案 1 :(得分:0)
您需要在应用程序中执行几项配置,
在您的所有Repository
组件上添加@Repositry注释,以便它们可用于component scan
。
@Repository
public interface CvRepository extends CrudRepository<Cv, Long>{
@Query("select c from Cv c where c.idiom = :idiom")
public List<Cv> listarCv(@Param("idiom") EnumIdiom idiom);
@Query("select c from Person c where c.idPerson=1")
public List<Person> listarPerson();
}
您需要在配置类的@EnableJpaRepositories
中定义要扫描的存储库包。
e.g. @EnableJpaRepositories("your_package")
答案 2 :(得分:0)
在standard Spring style中,您使用@Autowired(或@Inject)在服务上注释字段,构造函数或setter:
@Service
public class CvFacade implements Cvitae {
private CvRepository cvDao;
@Autowired
public CvFacade(CvRepository cvDao) {
this.cvDao = cvDao;
}
//....
}
那应该允许您在服务中访问它。您不需要将@Repository放在存储库if it already extends one of the Spring Data repository classes上。