@Autowired不适用于界面

时间:2014-05-27 07:22:56

标签: spring spring-mvc spring-security annotations autowired

我正在尝试过去4天来自Google的所有解决方案。但没有工作。

我正试图在界面下面自动装配 -

@Qualifier("roleAccessRepository")
@Repository
public interface RoleAccessRepository extends BaseJPACrudRepository<RoleAccess, Long> {
以下列方式在PermissionEvaluator中

。但它不起作用。

 @Scope(proxyMode = ScopedProxyMode.INTERFACES, value = "prototype")
public class PermissionEvaluator implements           org.springframework.security.access.PermissionEvaluator
 {

  @Autowired
  RoleAccessRepository roleAccessRepository;

..........

给我错误 -

      Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: net.pa
ger.lrs.sql.db.RoleAccessRepository net.pager.lrs.security.PermissionEvaluator.roleAccessRepository;
 nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying
bean of type [net.pager.lrs.sql.db.RoleAccessRepository] found for dependency: expected at least 1 b
ean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springf

但是,在同一个软件包中定义并在服务类中自动装配的存储库工作正常。

@Service
@Transactional
public class AccountService extends BaseCrudService<Account> {

/** The account db. */
@Autowired
private AccountRepository accountDB;

}

我的security.xml如下 - 它有基本软件包net.pager.lrs,它是父目录。

    

<bean id="permissionEvaluator" class="net.pager.lrs.security.PermissionEvaluator">
    <constructor-arg index="0">

请帮帮我。

1 个答案:

答案 0 :(得分:0)

确定,

从上面的讨论中,我仍然认为问题在于没有Autowired接口的具体实现。仅仅为了常识,如果您不提供实现,您将使用Autowired接口的引用执行什么。

有一种方法可以不定义实现,spring可以生成代理bean和autowire,但这没用。

您最终也可能会提供该接口的匿名实现。