defaultadvisorautoproxycreator
时间: 2023-04-13 10:01:10 浏览: 54
defaultadvisorautoproxycreator是Spring框架中的一个类,用于自动创建代理对象。它会根据配置文件中的Advisor来自动创建代理对象,并将其织入到目标对象中。这个类是AOP的核心组件之一,可以帮助我们实现面向切面编程。
相关问题
解释一下这段代码, public SessionsSecurityManager securityManager() { DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager(); securityManager.setRealm(userRealm()); securityManager.setSessionManager(sessionManager()); securityManager.setRememberMeManager(rememberMeManager()); return securityManager; } @Bean public DefaultWebSessionManager sessionManager() { DefaultWebSessionManager sessionManager = new DefaultWebSessionManager(); sessionManager.setSessionIdUrlRewritingEnabled(false); long time = 26060*1000; sessionManager.setGlobalSessionTimeout(time); return sessionManager; } @Bean public ShiroDialect shiroDialect(){ return new ShiroDialect(); } @Bean public LifecycleBeanPostProcessor lifecycleBeanPostProcessor() { return new LifecycleBeanPostProcessor(); } @Bean @DependsOn("lifecycleBeanPostProcessor") public static DefaultAdvisorAutoProxyCreator getDefaultAdvisorAutoProxyCreator(){ DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator=new DefaultAdvisorAutoProxyCreator(); defaultAdvisorAutoProxyCreator.setUsePrefix(true); return defaultAdvisorAutoProxyCreator; }
这段代码主要是用于配置Shiro框架的SessionsSecurityManager以及一些相关的组件。
其中,securityManager()方法中创建了一个DefaultWebSecurityManager对象,并通过setRealm()、setSessionManager()和setRememberMeManager()方法分别设置了该对象的Realm、SessionManager和RememberMeManager。Realm用于身份认证和授权,SessionManager用于管理会话,RememberMeManager用于实现“记住我”功能。最后,该方法返回该对象。
sessionManager()方法中创建了一个DefaultWebSessionManager对象,并设置了该对象的全局会话超时时间为26分钟,同时关闭了URL重写功能,防止在会话ID泄露的情况下进行会话劫持。
shiroDialect()方法用于配置Thymeleaf模板引擎中的Shiro标签库,用于在模板中方便地使用Shiro框架的相关功能。
lifecycleBeanPostProcessor()方法和getDefaultAdvisorAutoProxyCreator()方法用于配置Shiro框架的AOP支持。lifecycleBeanPostProcessor()方法创建了一个LifecycleBeanPostProcessor对象,用于在Shiro框架初始化完成后自动调用Shiro bean的init()和destroy()方法。getDefaultAdvisorAutoProxyCreator()方法创建了一个DefaultAdvisorAutoProxyCreator对象,用于自动代理使用了@RequiresRoles、@RequiresPermissions等注解的方法,实现AOP拦截和授权。
shiro 的配置类怎么写
Shiro的配置类可以通过继承org.apache.shiro.spring.config.ShiroAnnotationProcessorConfiguration类来实现。这个类提供了Shiro的注解处理器,可以将Shiro的注解自动注册到Spring容器中。
下面是一个简单的Shiro配置类的示例:
@Configuration
public class ShiroConfig {
@Bean
public ShiroFilterFactoryBean shiroFilterFactoryBean(DefaultWebSecurityManager securityManager) {
ShiroFilterFactoryBean filterFactoryBean = new ShiroFilterFactoryBean();
filterFactoryBean.setSecurityManager(securityManager);
Map<String, String> filterChainDefinitionMap = new LinkedHashMap<>();
filterChainDefinitionMap.put("/login", "anon");
filterChainDefinitionMap.put("/**", "authc");
filterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);
return filterFactoryBean;
}
@Bean
public DefaultWebSecurityManager securityManager(Realm realm) {
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
securityManager.setRealm(realm);
return securityManager;
}
@Bean
public Realm realm() {
return new MyRealm();
}
@Bean
public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(DefaultWebSecurityManager securityManager) {
AuthorizationAttributeSourceAdvisor advisor = new AuthorizationAttributeSourceAdvisor();
advisor.setSecurityManager(securityManager);
return advisor;
}
@Bean
public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() {
DefaultAdvisorAutoProxyCreator creator = new DefaultAdvisorAutoProxyCreator();
creator.setProxyTargetClass(true);
return creator;
}
}
这个配置类中定义了ShiroFilterFactoryBean、DefaultWebSecurityManager、Realm、AuthorizationAttributeSourceAdvisor和DefaultAdvisorAutoProxyCreator这些bean,它们分别用于配置Shiro的过滤器、安全管理器、认证和授权的数据源、授权注解处理器和AOP代理创建器。
在这个示例中,ShiroFilterFactoryBean用于配置Shiro的过滤器链,将所有请求都需要认证通过才能访问;DefaultWebSecurityManager用于配置Shiro的安全管理器,将自定义的Realm注入;Realm用于配置认证和授权的数据源,这里使用了自定义的MyRealm;AuthorizationAttributeSourceAdvisor和DefaultAdvisorAutoProxyCreator用于配置Shiro的注解处理器和AOP代理创建器,将Shiro的授权注解自动注册到Spring容器中。
需要注意的是,如果使用了Shiro的注解处理器,还需要在Spring的配置类上添加@EnableAspectJAutoProxy注解,以开启AOP代理功能。