для целей обучения я хотел бы создать две пользовательские аннотации 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();
...
}
Как я могу определить две аннотации и соответствующее поведение?