В чем разница между внедрением метода с использованием @Lookup и созданием нового объекта? - PullRequest
0 голосов
/ 26 апреля 2020

Не думаю, что у меня есть точка @Lookup.

Допустим, у меня есть класс

@Component
SingletonClass{

    @Lookup
    public CalendarObj getCalendarObj(){
        return null;
    }

    public void printCalendar(){
        CalendarObj calendarObj = getCalendarObj();
        calendarObj.getTime();
    }
}

@Component
@Scope("prototype")
public class CalendarObj {
    private Calendar calendar;

    public CalendarObj(){
        System.out.println("Prototype bean created");
        this.calendar = Calendar.getInstance();
    }

    public void getTime(){
        System.out.println(this.calendar.getTime());
    }
}

В чем разница между

SingletonClass{

    @Lookup
    public CalendarObj getCalendarObj(){
        return null;
    }
}

и

SingletonClass{

    public CalendarObj getCalendarObj(){
        return new CalendarObj();
    }
}

Кажется, что они оба создают новый объект CalendarObj или нет? Насколько я понимаю, @Lookup помогает внедрять компоненты на основе прототипов в одноэлементный компонент, но какая разница, если я просто создаю новый объект и возвращаю его без @Lookup?

...