Java 8 and Spring 4 : Use autowiring in interface

后端 未结 2 1513
心在旅途
心在旅途 2021-02-02 12:14

Java 8 added a new feature by which we can provide method implementation in interfaces. Is there any way in Spring 4 by which we can inject beans in the interface which can be u

2条回答
  •  盖世英雄少女心
    2021-02-02 12:31

    This is a bit tricky but it works if you need the dependency inside the interface for whatever requirement.

    The idea would be to declare a method that will force the implemented class to provide that dependency you want to autowire.

    The bad side of this approach is that if you want to provide too many dependencies the code won't be pretty since you will need one getter for each dependency.

    public interface TestWiring {
    
       public Service getService();
    
       default void testWiringMethod(){
           getService().testService();
       }
    
    }
    
    
    public class TestClass implements TestWiring {
    
        @Autowire private Service service;
    
        @Override
        public Service getService() {
            return service;
        }
    
    }
    

提交回复
热议问题