2016-10-03 10 views
0

私は、実際に別のWebサービスからWebサービスとして呼び出されているプログラムを持っています。私のプログラムの呼び出し側は、入力(私のプログラムへの入力も)をJSONに変換し、JSONを渡す私のプログラムを呼び出します。私のプログラムは(GSONを通して)Javaコードに変換します。入力はpomに含まれているjarファイルにあることに注意してください。入力の一部をオートワイヤリングする方法はありますか?私はこれまで何をやったかSpring - 実行時に@Autowiredを提供する

は、システム情報と呼ばれる私がautowireしたい部分、上@Componentを置くことです:

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

} 
:私はで構成されていApplicationConfig.javaを設定した

@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> 

私は瓶に入れて、@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(); 

私は、JavaにJSONに変換した後、私は入れてリフレッシュオブジェクト。私は@Autowiredを私のDAOオブジェクトのSystemInfoの前に置き、デバッグで私のDAOを踏んだり、SystemInfoはnullです。私はこれを行う方法がなければならないと思っていますが、私はそれが何であるか分かりません。

+1

あなたがしたいことは、あなたがwebserviceで受け取った転送オブジェクトを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

私はようやく諦めて、ほとんどすべてのSpringアノテーションを取り出しました。私はまだ@RestController、ある程度の@Component、そして振りかけは@Autowired@Repositoryです。私はすべてのDAOでこれを置くことによってこの問題を回避ました:私は、引数としてシステム情報を提供し、すべての作業を行う前にinitメソッドを呼び出し

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

@Autowiredのようにこれを行うには何らかの方法が必要ですが、それは何か分かりません。

関連する問題