0

applicationContext.xmlに.dtdを使用しましたが、アノテーションに基づいてSpringのAOPを使用したいと思います。applicationContext.xmlにを追加するように言われました。

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
    <aop:aspectj-autoproxy />
...

しかし、何か問題が発生します。ファイルがaopノードを認識していないようです。そのため、もう1つの.dtdファイルをインポートする必要があると思います。これを見つけました。

<!DOCTYPE aspectj PUBLIC
        "-//AspectJ//DTD//EN" "http://www.eclipse.org/aspectj/dtd/aspectj.dtd">

しかし、両方の.dtd togeterを使用できますか?どうやって?

どうも

4

2 に答える 2

2

ここで使用する必要はありませんDOCTYPE。次のように xml 名前空間を宣言することをお勧めします。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd">

<beans>
    <aop:aspectj-autoproxy />
...

xmlns="http://www.springframework.org/schema/beans"これは、beansルート名前空間 (を使用する必要はありません<beans:bean>) になりaop、必要に応じてアクセスできることを意味します。

于 2012-08-22T17:33:24.307 に答える
0

あなたが引用する2つのDTDは、それらを一緒に使用できるように構築されていません。特に、beanshttp ://www.springframework.org/dtd/spring-beans.dtdでの定義は

<!ELEMENT beans (
              description?,
              (import | alias | bean)*
)>

、という名前の子は提供されません。またaop:aspectj-autoproxy、あなたのような後のユーザーがのコンテンツに新しいものを追加するためのメカニズムも提供されませんbeans

DTDは、拡張性と複数の名前空間からの要素の統合をサポートするために構築できますが、少しの予見と計画が必要です。拡張ポイントが含まれていない場合、DTDを書き換えるだけで拡張することは、通常、かなり困難または不可能です。

于 2012-08-23T21:39:11.267 に答える