Вопрос по Spring

Jan 27, 2012 11:43

Есть например такая структурка

Можно ли как-то в C получить ссылку на A не явно, иерархически?

spring

Leave a comment

Comments 15

norguhtar January 27 2012, 03:23:37 UTC
Только после инициализации в коде. Иначе проблема курица и яйца.

Reply

rambalac January 27 2012, 03:48:41 UTC
Надеюсь через какой-нибудь интерфейс спринг, а не рефлекшнс

Reply

norguhtar January 27 2012, 03:54:14 UTC
Из контекста в коде достать можно. А вот в конфигурации думаю нет.

Reply

rambalac January 27 2012, 04:02:46 UTC
Тоесть стоит посмотреть бинавэа интерфейс

Reply


slonopotamus January 27 2012, 05:09:29 UTC
Пусть сам А даст С ссылку на А.

Reply

rambalac January 27 2012, 06:05:37 UTC
Это вариант, но придётся немного логику извращать, а так хотелось сделать "красиво"

Reply

mvmn January 27 2012, 11:23:36 UTC
Плюсуюсь

class A {

private C c;

public void setC(C c) {
this.c = c;
c.setA(this);
}
...
}

Reply


magicprinc January 27 2012, 05:29:39 UTC
Пастернака не читал, но кажется используя SpEL можно получить внешний бин.
~

Reply

rambalac January 27 2012, 06:04:18 UTC
Если пихать еще одно проперти, то проще просто ссылку на А, без всяких заклинаний

Reply


hedin January 27 2012, 08:44:13 UTC
Ну собственно да, завести 2 честных бина раздать честно ссылки через проперти ...
Остального "вы не должны хотеть"

Reply

rambalac January 27 2012, 08:52:27 UTC
Собственно решил как знал через родительский бин.

Reply


dernasherbrezon January 28 2012, 07:50:15 UTC
Подумайте над другим дизайном. У вас получается что А и С сильно связаны.

Reply

rambalac January 28 2012, 09:16:01 UTC
Они должны быть связаны. Объекты Class2 могут быть только внутри объектов Class1

Reply

dernasherbrezon January 28 2012, 14:12:38 UTC
То что объекты Class2 могут быть только внутри объектов Class1 видно из задания. Если у вас есть два бина/класса которые друг на друга ссылаются, то это:
- цикличная зависимость
- сильно связанный код.

Разрешение таких конфликтов всегда специфично для задачи. Попробуйте переформулировать задачу и ввести другую модель взаимодействия.

Reply


Leave a comment

Up