How to create a default overridable Component in Spring?

Viewed 1036

I am trying to create a Component that will be Autowired unless the user creates a different implementation. I used the following code to try and isolate the problem:

The interface:

public interface A {...}

The implementation:

@Component
@ConditionalOnMissingBean(A.class)
public class AImpl implements A {...}

The usage code:

public class AUsage {
    @Autowired
    private A a;
}

In this example, I don't get AImpl autowired into AUsage. If I implement A in another class without the ConditionalOnMissingBean it works.

1 Answers
Related