odd things of apache-shiro integrated into spring-mvc via spring-boot -


i want use apache-shiro protect urls. so, did config

@configuration public class applicationconfigshiro {      @bean     public shirofilterfactorybean shirofilter() {         shirofilterfactorybean factorybean = new shirofilterfactorybean();         factorybean.setsecuritymanager(securitymanager());         return factorybean;     }      // blah blah ...      @bean(name = "realm")     @dependson("lifecyclebeanpostprocessor")     public propertiesrealm realm() {         // blah blah     }      @bean     public lifecyclebeanpostprocessor lifecyclebeanpostprocessor() {         return new lifecyclebeanpostprocessor();     }      @bean     @dependson("lifecyclebeanpostprocessor")     public defaultadvisorautoproxycreator defaultadvisorautoproxycreator() {         return new defaultadvisorautoproxycreator();     }      @bean     public authorizationattributesourceadvisor authorizationattributesourceadvisor() {         authorizationattributesourceadvisor advisor = new authorizationattributesourceadvisor();         advisor.setsecuritymanager(securitymanager());         return advisor;     } } 

and here mvc-request-method

@controller @requestmapping("/html") public class htmlcontroller {      @resource     private userservice userservice;      @requestmapping(value = "/users", method = requestmethod.get)     public modelandview listusers() {         list<user> users = userservice.findallusers();         modelandview modelandview = new modelandview("users");         modelandview.addobject("users", users);         return modelandview;     }  } 

very thing ok. , start project mvn spring-boot:run. , check out http://localhost:8080/mappings json result can tell me mapping /html/users ready use. did check out http://localhost:8080/html/users, fine.

but once add shiro's annotations @requiresauthentication request-mapping-method this:

@requiresauthentication    // **i add line** @requestmapping(value = "/users", method = requestmethod.get) public modelandview listusers() {     list<user> users = userservice.findallusers();     modelandview modelandview = new modelandview("users");     modelandview.addobject("users", users);     return modelandview; } 

re-run project, re-check http://localhost:8080/mappings, mapping /html/users gone. try access http://localhost:8080/html/users got 404 of course.

did miss something? or bug of spring?

help me please. sorry give trouble.

git clone git@github.com:yingzhuo/spring-playground.git cd spring-playground mvn clean spring-boot:run 

ok, found answer myslef.

@bean     @dependson("lifecyclebeanpostprocessor")     public defaultadvisorautoproxycreator defaultadvisorautoproxycreator() {         defaultadvisorautoproxycreator proxycreator = new defaultadvisorautoproxycreator();         proxycreator.setproxytargetclass(true); // setting         return proxycreator;     } 

Comments