Создайте пользовательскую аннотацию внедрения Java - PullRequest
0 голосов
/ 12 декабря 2018

для целей обучения я хотел бы создать две пользовательские аннотации Java:

  • @ SingletonBean для преобразования класса в Singleton
  • @ InjectBean для внедрения экземпляра singleton, где это необходимо.

Это означает, что если я напишу:

@SingletonBean
public class Engine{ ... }

public class Car {
   @InjectBean Engine engine;
   ...
}

, я бы ожидал, что под капотом это будет точный эквивалент:

public class Engine{
   private static Engine instance;
   public static Engine getInstance(){
      if(instance==null){
         instance = new Engine();
      }
      return instance;
   }
   ...
}


public class Car {
   Engine engine = Engine.getInstance();
   ...
}

Как я могу определить две аннотации и соответствующее поведение?

...