JavaFx & amp; Spring Boot: DI в подклассах элементов JavaFX [дубликат]

Другое решение flexbox

Вы можете использовать инверсию порядка элементов в HTML. Затем, используя order, как в ответе Michael_B , вы можете использовать flex-direction: row-reverse; или flex-direction: column-reverse; в зависимости от вашего макета.

Рабочий пример:

.flex {
  display: flex;
  flex-direction: row-reverse;
   /* Align content at the "reversed" end i.e. beginning */
  justify-content: flex-end;
}

/* On hover target its "previous" elements */
.flex-item:hover ~ .flex-item {
  background-color: lime;
}

/* styles just for demo */
.flex-item {
  background-color: orange;
  color: white;
  padding: 20px;
  font-size: 3rem;
  border-radius: 50%;
}
5
4
3
2
1

101
задан Igor Mukhin 28 September 2010 в 15:04
поделиться

5 ответов

Вы можете сделать это, используя метод autowireBean() в AutowireCapableBeanFactory. Вы передаете ему произвольный объект, а Spring будет обрабатывать его, как то, что он сам создал, и будет применять различные куски и куски автоувеличивания.

Чтобы получить доступ к AutowireCapableBeanFactory, просто используйте autwire, что:

private @Autowired AutowireCapableBeanFactory beanFactory;

public void doStuff() {
   MyBean obj = new MyBean();
   beanFactory.autowireBean(obj);
   // obj will now have its dependencies autowired.
}
151
ответ дан skaffman 17 August 2018 в 19:33
поделиться
  • 1
    Хороший ответ (+1). Существует также второй метод, в котором вы можете влиять на то, как происходит автоустановка: static.springsource.org/spring/docs/3.0.x/javadoc-api/org/… – Sean Patrick Floyd 28 September 2010 в 15:29
  • 2
    Но что делать, если у меня есть два объекта, а второй - второй. Как работает фабрика автозапуска с зависимостями в этом случае? – Vadim Kirilchuk 20 January 2014 в 21:25
  • 3
  • 4
    Я согласен - Весна переопределила весь язык. Теперь мы используем интерфейсы как конкретные классы, методы как экземпляры классов и всевозможные сложные и тяжелые методы кода, которые делают то, что вы делали с новым и достойным дизайном. – Rodney P. Barbati 3 September 2015 в 15:22
  • 5
    @Denis, если MyBean имеет зависимости, которые не нужны фактическому классу, вы регистрируете зависимости, которые на самом деле не существуют, просто для класса, поэтому нет никакой разницы. – Dalton 11 February 2016 в 13:36

Вы также можете пометить свой MyClass @Configurable аннотацией:

@Configurable
public class MyClass {
   @Autowired private AnotherClass instance
}

Затем во время создания он автоматически вводит свои зависимости. Вы также должны иметь <context:spring-configured/> в вашем контексте приложения xml.

16
ответ дан glaz666 17 August 2018 в 19:33
поделиться
  • 1
    Galz666, ваш метод выглядит намного чище, чем я хочу. Однако я не могу заставить его работать. У меня нет файла xml и я использую полностью конфигурацию Java. Есть ли эквивалент <context:spring-configured/>? – masstroy 30 August 2014 в 05:51
  • 2
    – Igor Mukhin 8 April 2015 в 14:54
  • 3
    Это чистое решение, но требует немного больше усилий: вы должны либо использовать время загрузки во времени, как показывает iimuhin выше, либо добавить компилятор AspectJ для проекта. Время загрузки, как следует из названия, приведет к дополнительным затратам во время выполнения. – jsosnowski 15 August 2015 в 14:25

Не обойтись без обходных путей, так как Spring ничего не знает об этом экземпляре.

Реальный вопрос: зачем вы создаете экземпляры класса, которые вы хотите использовать вложенные вручную, а не позволяете Spring управлять им? ? Почему класс, использующий MyClass, не вставляет MyClass в него?

-5
ответ дан matt b 17 August 2018 в 19:33
поделиться
  • 1
    Ваш ответ неверен, и ваш «реальный вопрос» это комментарий, а не ответ. – Eric Wilson 10 September 2012 в 20:10
0
ответ дан Raf 17 August 2018 в 19:33
поделиться

Просто получил такую ​​же потребность, и в моем случае это уже была логика внутри нестандартного класса java, который имел доступ к ApplicationContext. Вдохновленный скиффом. Решено:

AutowireCapableBeanFactory factory = applicationContext.getAutowireCapableBeanFactory();
factory.autowireBean(manuallyCreatedInstance);
2
ответ дан rand0m86 17 August 2018 в 19:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: