Groovy を学習し、それを既存の Java jar と統合しようとしています。JavaコードはDIを利用していますが、グルーヴィーなスクリプトから動作させることができません。
Java アプリケーションには、Mybatis を使用したデータ アクセス レイヤーが含まれています。このレイヤーは、いくつかのインターフェイス (IUser など) とコントローラーなどで構成されます。
@Service
public class UserController implements IUser
コントローラーは Mybatis マッパー クラスを利用します。
すべては、Spring と default-autowire="byName"> を使用してまとめられます。
アノテーションを使用してコントローラー内のマッパーにアクセスするように設定されています。
Mybatis は Spring で構成され、マッパーをスキャンして注入します
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.directski.data.mapper" />
<property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
</bean>
したがって、Javaでアプリケーションを実行すると、すべてが正常に機能します。私が使用して呼び出したすべてのマッパーを含む
@Autowired
private UserMapper userMapper;
この jar を groovy スクリプトの一部として含めようとすると、いくつかの問題が発生し始めます。Springに同じapplicationContextファイルを使用しています
ApplicationContext ctx = new ClassPathXmlApplicationContext("controller-layer-applicationContext.xml");
スクリプトとして実行すると、ログからコンポーネントがスキャンされていることがわかります。私のコントローラーの一部には、呼び出される @PostConstruct メソッドが含まれており、データベース クエリが正常に実行されます。ただし、スクリプトからコントローラーを呼び出そうとすると、null ポインター エラーが発生します。
@Autowired を使用して groovy でコントローラーを作成しようとしましたが、注入されないようです。http://groovy.codehaus.org/Using+Spring+Factories+with+Groovyの例に従って factory.registerBeanDefinition() も実装し ましたが、これによりコントローラーが作成されるように見えますが、Mybatis マッパーは私のコントローラーが null を返す
コントローラーが Groovy から正しく自動配線されていることを確認するにはどうすればよいですか?