我正在尝试过去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">
请帮帮我。
答案 0 :(得分:0)
确定,
从上面的讨论中,我仍然认为问题在于没有Autowired
接口的具体实现。仅仅为了常识,如果您不提供实现,您将使用Autowired
接口的引用执行什么。
有一种方法可以不定义实现,spring可以生成代理bean和autowire,但这没用。
您最终也可能会提供该接口的匿名实现。