如何将托管bean注入@Component Spring类?

时间:2017-07-20 16:07:17

标签: java spring

我有一个用@Component注释注释的Spring类。我需要将bean注入局部变量。如何将托管bean或EJB var注入@Component Spring类?

@Component
public class AppInternetAuthenticationProvider implements AuthenticationProvider, Serializable {

    private IAutenticacaoBO autenticacaoBO;

    public void setAutenticacaoBO(IAutenticacaoBO autenticacaoBO) {
        this.autenticacaoBO = autenticacaoBO;
    }

    public AppInternetAuthenticationProvider() {

    }

    @Override
    public Authentication authenticate(Authentication authentication) throws AuthenticationException {
// I need inject here

2 个答案:

答案 0 :(得分:0)

假设您的上下文已设置为注释配置,并且您尝试注入的bean是IAutenticacaoBO,您只需在setter之前添加@Autowired注释。

@Autowired
public void setAutenticacaoBO(IAutenticacaoBO autenticacaoBO) {

事实上,您根本不需要设置器,只需在私有属性之前添加@Autowired注释。

@Autowired
private IAutenticacaoBO autenticacaoBO;

答案 1 :(得分:0)

我知道有三种类型,其中@Autowired就在提到的成员之前:

  1. 现场注射
  2. Setter injection
  3. 构造函数注入
  4. 不鼓励现场注射,像IDEA这样的IDE在这里呻吟。 Setter注入有点棘手,因为它可以引入递归,因此我使用Constructor注入。 使用Spring> 5(或> 4.3.x?),您不再需要@Autowired,这一切都会神奇地发生。