2016-09-11 3 views
3

@Serviceと@Controllerアノテーションは、Springフレームワークのクラスパススキャンを使用した自動Bean検出に使用されます。春の@serviceの動作の混乱

私は4つ以下のユースケースを試しましたが、404エラーが出るので、ケース4とちょっと混乱しています。

ユースケース1: @Controller &クラスレベル@RequestMapping

@Controller 
@RequestMapping(value = "/home") 
public class MyController 
{ 
... 
} 

結果:

http://localhost:8080/MyApp/home/helloWorld/va --->こんにちはVA

ユースケース2: @Service &クラスレベル@RequestMapping

@Service 
@RequestMapping(value = "/home") 
public class MyController 
{ 
... 
} 

結果:

http://localhost:8080/MyApp/home/helloWorld/va --->こんにちはVA

ユースケース3:& @Controllerなしクラスレベル@RequestMapping

@Controller 
public class MyController 
{ 
... 
} 

結果:

http://localhost:8080/MyApp/helloWorld/va --->こんにちはVA

ユースケース4: @Service &なしクラスレベル@RequestMapping

@Service 
public class MyController 
{ 
... 
} 

結果:

http://localhost:8080/MyApp/helloWorld/va --->エラー404

コード:

@Service 
@RequestMapping(value = "/home") 
public class MyController 
{ 

    @RequestMapping(value = "/helloWorld/{Name}", method = RequestMethod.GET) 
    public @ResponseBody String HelloWorld(@PathVariable("Name") String name) 
    { 
     return "Hello "+name; 
    } 
} 

@Serviceを使用しているとき、私はクラスレベルで@RequestMappingを使用していけないのであれば、短い中で、404エラーを取得しています。

+1

参照:http://stackoverflow.com/questions/15922991/is-spring-annotation-controller-same-as-service – Unknown

+1

http://stackoverflow.com/questions/6827752/whats-the-difference-between -component-repository-service-annotations-in – Unknown

+0

実際に私はすでに投稿を行ってきましたが、なぜ@RequestMappingを削除すると404エラーが発生するのか分かりませんでした。 – Vaibs

答えて

0

クラスレベルで@Controllerまたは@RequestMappingのいずれかがある場合、Beanは要求ハンドラと見なされます。

+0

のいずれか? AFAIK自動スキャンを有効にした後、Springがコンテナ内のBeanをインポートします。RequestMappingを使用して、app.Alsoの受信リクエストをマップすることができます。また、クラスレベルのrequestMappingなしで@serviceを使用した後、404エラーが発生します。 – Vaibs

+0

@Vaibs私はBeanを書いた。それはクラスがすでに春までに考慮されていることを意味します。 Beanを宣言するために '@ Controller'を必要としません。 _ "私の質問は、クラスレベルのrequestMappingなしで@serviceを使用した後の404エラーに関連しています。" _そして私はその質問に答えました。 – zeroflagL

+0

xmlまたはjavaクラスを使用して設定していますか? – Vaibs