2012-08-22 2 views
0

내 applicationContext.xml에 .dtd를 사용하고 있습니다.하지만 이제는 주석에 기반하여 Spring의 AOP를 사용하고 싶습니다. 내 applicationContext.xml에 a를 추가하라는 명령을 받았습니다.스프링 구성 파일에 dtd를 하나 더 추가하는 방법은 무엇입니까?

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

하지만 뭔가 잘못되었습니다. 이 파일이 AOP 노드를 인식하지 못하는 것 같다, 그래서 내가 한 번 더이 .dtd 파일을 가져해야한다고 생각하고, 나는이 찾을 :

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

을하지만 난 둘 다위한 것일은 .dtd 사용할 수 있습니까? 방법?

들으

답변

2

이 같은 XML 네임 스페이스를 더 여기 DOCTYPE를 사용하여 선언 할 필요가 없습니다 : 당신이 <beans:bean>을 사용할 필요가 없습니다 (

<?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 루트 네임 스페이스를 수 있다는 것을 의미) 및 aop은 원하는대로 액세스 가능합니다.

+0

고마워요, 작동합니다! – MangMang

0

인용하는 두 개의 DTD는 함께 사용될 수있는 방식으로 구성되지 않습니다. 특히, http://www.springframework.org/dtd/spring-beans.dtd에서 beans의 정의는

입니다
<!ELEMENT beans (
       description?, 
       (import | alias | bean)* 
)> 
그것은 aop:aspectj-autoproxy라는 이름의 아이를 위해 제공하지 않습니다, 당신은 beans의 내용에 새로운 것을 추가하는 것처럼 나중에 사용자에 대한 메커니즘을 제공하지 않습니다

.

DTD는 여러 가지 네임 스페이스의 요소 통합을 지원하고 확장 성을 위해 만들어 질 수 있지만 약간의 사전 고려 및 계획이 필요합니다. 확장 점이 포함되지 않은 경우 DTD를 다시 작성하지 않고 DTD를 확장하는 것은 일반적으로 매우 어렵거나 불가능합니다.