когда использовать getAutowireCapableBeanFactory (). autowireBean (someBean)? - PullRequest
2 голосов
/ 09 февраля 2012

Весной, когда использовать приведенный ниже код?Какой будет эффект, если включить ниже строки?

getAutowireCapableBeanFactory().autowireBean(someBean)

Спасибо!

Ответы [ 2 ]

3 голосов
/ 09 февраля 2012

Вообще говоря, ответ «никогда».Это внутренняя функция Spring, и хотя вы можете использовать ее самостоятельно, вам, скорее всего, не следует.

Вы можете использовать ее для автоматического связывания зависимостей в объект, который вы создаете сами, ноэто очень специализированный вариант использования, который вам не нужен в 99,99% случаев.

0 голосов
/ 03 июля 2018

Я встретил сценарий использования, следующий:

В частности: у меня есть 2 проекта, p1 и p2.

p1: у этого проекта есть класс A, который использовал аннотацию @Resource для автоматической передачи bean-компонента B в Spring IOC, а класс A имеет метод f (), который использует bean-компонент atuowired B.

public class A{
@Resource
B b;
public void action() {
    System.out.println(b == null);
    b.dosth();
    }
}

p2: этот проект вызывает метод действия A путем отражения.

URL url1 = new URL(jarPath); // "file:D:/jarload/test.jar"
URLClassLoader myClassLoader1 = new URLClassLoader(new URL[] { url1 },
Thread.currentThread().getContextClassLoader());
Class<?> myClass1 = myClassLoader1.loadClass(classFullName);
Object obj = myClass1.newInstance();
// this.context.getAutowireCapableBeanFactory().autowireBean(obj); //without this,the b will be null.
Method method = myClass1.getDeclaredMethod("action");
method.invoke(obj);
  1. Экспорт p1 в файл jar по Eclipse.
  2. В p2 запустите банку.

Надеюсь, это поможет вам!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...