2016-10-03 5 views
0

У меня есть программа, которая на самом деле называется веб-службой, с другой веб-службы. Вызывающая моя программа преобразует вход (который является входом в мою программу) в JSON, а затем вызывает мою программу, передавая JSON. Моя программа преобразует ее (через GSON) в Java-код. Имейте в виду, что вход находится в файле jar, который включен в мой pom. Есть ли способ автоподключить часть ввода?Spring - предоставление @Autowired во время выполнения

Что я сделал до сих пор поставить @Component на части я хочу autowire, называется SystemInfo:

@Component 
public class SystemInfo { 
    protected String GUID; 
    protected String EntityID; 
    protected Double EpisodeNumber; 
    protected Double ErrorCode; 
    protected String ErrorMesg; 
    protected String Facility; 
    protected String NamespaceName; 
    protected String OptionId; 
    protected String OptionStaffId; 
    protected String OptionUserId; 
    protected String ParentNamespace; 
    protected String ServerName; 
    protected String SystemCode; 
    protected String WarName; 
    protected String ScriptName; 

    /** 
    * @return the gUID 
    */ 
    public String getGUID() { 
     return GUID; 
    } 
<other setters and getters> 

Я создал ApplicationConfig.java, который состоит из:

@Configuration 
@ComponentScan(basePackages = "org.mhcd.avatar.model") 
public class ApplicationConfig { 

} 

Я положил это в банку, чтобы он увидел @Component. Я положил в XML для моей программы:

<bean id="systemInfo" 
    class="org.mhcd.avatar.model.domainLayer.SystemInfo" 
    autowire="byType" autowire-candidate="true"> 
</bean> 

Затем я положил в моей программе:

@Autowired 
private ApplicationContext context; 

и

GenericApplicationContext ctx = new GenericApplicationContext(context); 
ctx.refresh(); 

Обновление экрана я поставил после того, как я преобразовал JSON в Java объекты. Я положил @Autowired перед SystemInfo в мои объекты DAO, и я прошел через свои DAO в отладке, а SystemInfo - null. Я думаю, что должен быть способ сделать это, но я не знаю, что это.

+1

Что вы хотите сделать, это autowire объект передачи, который вы получаете в своем веб-сервисе? Почему ты хочешь сделать это ? – reos

+0

Возможный дубликат [Как обновить все весенние объекты после настройки новой конфигурации?] (Http://stackoverflow.com/questions/36501508/how-can-i-update-all-spring-objects-after-setting-new -configuration) – nowszy94

+0

@reos Да, это точно. Я хочу сделать это, потому что это требует журнал. (Регистратор основан на log4j 2 и записывается в базу данных.) Часть, которую я хочу «@ Autowired», содержит много информации. – horndinkle

ответ

0

Я, наконец, сдался и достал почти все аннотации Весны. У меня все еще есть @RestController, некоторые @Component и дождевание @Autowired и @Repository. Я получил вокруг этого вопроса, поставив это во всех моих DAO,:

private SystemInfo systemInfo; 
public void init(SystemInfo systemInfo) { 
    this.systemInfo = systemInfo; 
} 

Я тогда назвал метод инициализации, прежде чем делать какие-либо работы, обеспечивая Systeminfo в качестве аргумента.

Должен быть какой-то способ сделать это как вещь @Autowired, но я не знаю, что это такое.

Смежные вопросы