0

私はspring-rooを使用してプロジェクトを生成しています。これら2つのことが関連しているかどうかはわかりませんが、Controllerでは、アノテーション@Asyncまたは@Secureのいずれも機能しません。@Secureの場合:<global-method-security secured-annotations="enabled"/>applicationContext-security.xmlにタグを追加し、依存関係を満たすようにpom.xmlを変更しました。

<dependency>
   <groupId>org.springframework.security</groupId>
   <artifactId>spring-security-aspects</artifactId>
   <version>3.0.5.RELEASE</version>
</dependency>

コントローラのメソッドの上に追加しまし@Secured("ROLE_ADMIN")たが、誰もがメソッドにアクセスできる役割に関係なく。@Secureをアクティブにするために構成するのに失敗したものはありますか?

@Asyncの場合:applicationContext.xmlに、追加しました

<task:annotation-driven executor="asyncExecutor"/>
<task:executor id="asyncExecutor" pool-size="${executor.poolSize}"/>

controller.java:

@Async
private void justWait20seconds() {
    try {
        Thread.sleep(20000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}

このメソッドはメインメソッドをブロックしないと思いますが、ブロックしませんでした。これらの2つのタグはすべて私のUserController.javaにあり、リンクされているかどうかはわかりません。誰か助けてもらえますか?

4

2 に答える 2

2

SpringMVCアプリケーションでSpringコンテキストがどのように編成されているかを理解しておらず、間違ったコンテキストにアノテーション処理命令を追加しているようです。SpringMVCのSpringコンテキストについて読んでください。他の関連する回答に分岐する私の別のSO回答は、次の場所にあります。DispatcherServletが別のアプリケーションコンテキストを作成する理由

于 2012-05-07T04:07:13.327 に答える
0

同じ問題が発生しました。セキュリティアノテーションはRooプロジェクトのjspxで機能しましたが、コントローラーでは機能しませんでした。私の修正は、webmvc-config.xmlに以下を追加することでした。

<security:global-method-security secured-annotations="enabled" />

(これをapplicationContext-security.xmlに追加しても機能しませんでした)

次に、pom.xmlにcglibの依存関係を追加しました。

<dependency>
    <groupId>cglib</groupId>
    <artifactId>cglib</artifactId>
    <version>2.2</version>
</dependency>
于 2013-03-12T19:10:06.123 に答える