powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring, Prototype
11 сообщений из 11, страница 1 из 1
Spring, Prototype
    #40033116
colacoca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Объясните, пожалуйста, почему при увеличении переменных film и year метод nextRelease не меняется.


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
import com.epam.rd.autotasks.confbeans.video.Channel;
import com.epam.rd.autotasks.confbeans.video.Video;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Scope;

import java.time.LocalDateTime;

import static java.util.stream.Collectors.toSet;

public class ChannelWithPhantomVideoStudioConfig {

    int film = 0;
    int year = 1999;

    @Bean
    public Channel channel (Video nextRelease) {

        Channel channel1 = new Channel();

        channel1.addVideo(nextRelease);
        film++;
        year++;
        channel1.addVideo(nextRelease);
        film++;
        year++;
        channel1.addVideo(nextRelease);
        System.out.println(channel1.videos()
                .collect(toSet()));

        return channel1;
    }

    @Bean
    @Scope("prototype")
    public Video nextRelease() {
        return new Video("Cat & Curious " + film, LocalDateTime.of(year, 10, 18, 10, 0));
    }

}
...
Рейтинг: 0 / 0
Spring, Prototype
    #40033122
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А так?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
public class ChannelWithPhantomVideoStudioConfig {

    AtomicInteger film = new AtomicInteger(0);
    AtomicInteger year = new AtomicInteger(1999);

    public Channel channel (Video nextRelease) {
        .....
        film.incrementAndGet();
        year.incrementAndGet();
         .....
...
Рейтинг: 0 / 0
Spring, Prototype
    #40033125
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
colacoca
Объясните, пожалуйста, почему при увеличении переменных film и year метод nextRelease не меняется.


Потому что bean video в данном примере создаётся 1 раз?
...
Рейтинг: 0 / 0
Spring, Prototype
    #40033129
colacoca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Lelouch, А нельзя сделать, чтобы его значение динамически менялось, как в этом примере?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
@Configuration
public class ChannelWithVideoStudioConfig implements VideoStudio{

    int film = 0;
    int year = 1999;

    @Bean
    public Channel channel (final VideoStudio videoStudio) {

        Channel channel1 = new Channel();

        channel1.addVideo(videoStudio.produce());
        channel1.addVideo(videoStudio.produce());
        channel1.addVideo(videoStudio.produce());
        channel1.addVideo(videoStudio.produce());
        channel1.addVideo(videoStudio.produce());
        channel1.addVideo(videoStudio.produce());
        channel1.addVideo(videoStudio.produce());
        channel1.addVideo(videoStudio.produce());
       

        return channel1;
    }

    @Override
    public Video produce() {

        film+=1;
        year+=2;
        return new Video("Cat & Curious " + String.valueOf(film), LocalDateTime.of(year, 10, 18, 10, 0));
    }

}
...
Рейтинг: 0 / 0
Spring, Prototype
    #40033130
colacoca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton, так тоже не получается, к сожалению
...
Рейтинг: 0 / 0
Spring, Prototype
    #40033131
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch
Потому что bean video в данном примере создаётся 1 раз?
Там же все не так... создается не бин, а фабрика, а вот внедряется уже бин созданный фабрикой, т.е. чтобы каждый раз было что-то новое нужно ObjectFactory<Video> внедрять, и дергать ее за getObject()
...
Рейтинг: 0 / 0
Spring, Prototype
    #40033133
colacoca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей Панфилов, могли бы вы побольше описать очередность действий, не совсем понимаю, как работает objectFactory
...
Рейтинг: 0 / 0
Spring, Prototype
    #40033134
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
colacoca
Андрей Панфилов, могли бы вы побольше описать очередность действий, не совсем понимаю, как работает objectFactory


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
import com.epam.rd.autotasks.confbeans.video.Channel;
import com.epam.rd.autotasks.confbeans.video.Video;
import org.springframework.beans.factory.ObjectFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Scope;

import java.time.LocalDateTime;

import static java.util.stream.Collectors.toSet;

public class ChannelWithPhantomVideoStudioConfig {

    int film = 0;
    int year = 1999;

    @Bean
    public Channel channel (ObjectFactory<Video> releaseFactory) {

        Channel channel1 = new Channel();

        channel1.addVideo(releaseFactory.getObject());
        film++;
        year++;
        channel1.addVideo(releaseFactory.getObject());
        film++;
        year++;
        channel1.addVideo(releaseFactory.getObject());
        System.out.println(channel1.videos()
                .collect(toSet()));

        return channel1;
    }

    @Bean
    @Scope("prototype")
    public Video nextRelease() {
        return new Video("Cat & Curious " + film, LocalDateTime.of(year, 10, 18, 10, 0));
    }

}
...
Рейтинг: 0 / 0
Spring, Prototype
    #40033135
colacoca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей Панфилов, спасибо вам большое! Долго мучился с этой темой
...
Рейтинг: 0 / 0
Spring, Prototype
    #40033188
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов
Lelouch
Потому что bean video в данном примере создаётся 1 раз?
Там же все не так... создается не бин, а фабрика, а вот внедряется уже бин созданный фабрикой, т.е. чтобы каждый раз было что-то новое нужно ObjectFactory<Video> внедрять, и дергать ее за getObject()

Что именно в моей фразе не так?

И кстати, не соглашусь. Логичнее было бы аннотировать класс @Configuration и вызывать метод nextRelease().
...
Рейтинг: 0 / 0
Spring, Prototype
    #40033191
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch
Андрей Панфилов
пропущено...
Там же все не так... создается не бин, а фабрика, а вот внедряется уже бин созданный фабрикой, т.е. чтобы каждый раз было что-то новое нужно ObjectFactory<Video> внедрять, и дергать ее за getObject()

Что именно в моей фразе не так?

И кстати, не соглашусь. Логичнее было бы аннотировать класс @Configuration и вызывать метод nextRelease().


https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#beans-java-further-information-java-config
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring, Prototype
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]