且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何在非 Spring 的构造型类中使用 @Autowired

更新时间:2023-10-06 13:24:58

你不能在 SecurityExpressionRoot@Autowire.
但是,您可以手动提供 FlatRepository 依赖项.

You cannot @Autowire inside a SecurityExpressionRoot.
You can however manually provide that FlatRepository dependency.

当您在 @Configuration 类中配置您的安全对象时,您可以@Autowire 任何您需要的实例.

As you're configuring your Security objects inside a @Configuration class, there you're able to @Autowire any instance you need.

只需为 CustomMethodSecurityExpressionRoot 构造函数中的新依赖项腾出空间

Simply make space for that new dependency in CustomMethodSecurityExpressionRoot constructor

class CustomMethodSecurityExpressionRoot extends SecurityExpressionRoot 
                                         implements MethodSecurityExpressionOperations {
    private final FlatRepository flatRepository;

    CustomMethodSecurityExpressionRoot(
            final Authentication authentication,
            final FlatRepository flatRepository) {
        super(authentication);
        this.flatRepository = flatRepository;
    }

    ...
}

并在实例化点手动注入

final SecurityExpressionRoot root = new CustomMethodSecurityExpressionRoot(authentication, flatRepository);