diff --git a/samples/spring-boot-3-web/src/main/java/org/apache/shiro/samples/WebApp.java b/samples/spring-boot-3-web/src/main/java/org/apache/shiro/samples/WebApp.java index c347ed875e..c42a6e59a7 100644 --- a/samples/spring-boot-3-web/src/main/java/org/apache/shiro/samples/WebApp.java +++ b/samples/spring-boot-3-web/src/main/java/org/apache/shiro/samples/WebApp.java @@ -27,10 +27,12 @@ import org.apache.shiro.subject.Subject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Role; import org.springframework.http.HttpStatus; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ControllerAdvice; @@ -41,10 +43,8 @@ import java.util.HashMap; import java.util.Map; -/** - * NOPMD - */ @Configuration +@Role(BeanDefinition.ROLE_INFRASTRUCTURE) @ControllerAdvice @SpringBootApplication public class WebApp { @@ -73,6 +73,7 @@ public String handleException(AuthorizationException e, Model model) { } @Bean + @Role(BeanDefinition.ROLE_INFRASTRUCTURE) public Realm realm() { TextConfigurationRealm realm = new TextConfigurationRealm(); realm.setUserDefinitions("joe.coder=password,user\n" + "jill.coder=password,admin"); @@ -83,6 +84,7 @@ public Realm realm() { } @Bean + @Role(BeanDefinition.ROLE_INFRASTRUCTURE) public ShiroFilterChainDefinition shiroFilterChainDefinition() { DefaultShiroFilterChainDefinition chainDefinition = new DefaultShiroFilterChainDefinition(); // need to accept POSTs from the login form diff --git a/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/boot/autoconfigure/ShiroAnnotationProcessorAutoConfiguration.java b/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/boot/autoconfigure/ShiroAnnotationProcessorAutoConfiguration.java index b17fa1b12b..f7f7aa12b0 100644 --- a/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/boot/autoconfigure/ShiroAnnotationProcessorAutoConfiguration.java +++ b/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/boot/autoconfigure/ShiroAnnotationProcessorAutoConfiguration.java @@ -23,6 +23,7 @@ import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor; import org.springframework.aop.config.AopConfigUtils; import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator; +import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.aop.AopAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; @@ -30,6 +31,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.DependsOn; +import org.springframework.context.annotation.Role; /** * @since 1.4.0 @@ -37,9 +39,9 @@ @SuppressWarnings("SpringFacetCodeInspection") @AutoConfigureAfter(AopAutoConfiguration.class) @Configuration +@Role(BeanDefinition.ROLE_INFRASTRUCTURE) @ConditionalOnProperty(name = "shiro.annotations.enabled", matchIfMissing = true) public class ShiroAnnotationProcessorAutoConfiguration extends AbstractShiroAnnotationProcessorConfiguration { - @Bean @DependsOn("lifecycleBeanPostProcessor") @ConditionalOnMissingBean(name = AopConfigUtils.AUTO_PROXY_CREATOR_BEAN_NAME) @@ -50,6 +52,7 @@ public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() { @Bean @ConditionalOnMissingBean + @Role(BeanDefinition.ROLE_INFRASTRUCTURE) @Override public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) { return super.authorizationAttributeSourceAdvisor(securityManager); diff --git a/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/boot/autoconfigure/ShiroAutoConfiguration.java b/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/boot/autoconfigure/ShiroAutoConfiguration.java index 58cf898b6a..f9db239922 100644 --- a/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/boot/autoconfigure/ShiroAutoConfiguration.java +++ b/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/boot/autoconfigure/ShiroAutoConfiguration.java @@ -31,11 +31,13 @@ import org.apache.shiro.session.mgt.eis.SessionDAO; import org.apache.shiro.spring.boot.autoconfigure.exception.NoRealmBeanConfiguredException; import org.apache.shiro.spring.config.AbstractShiroConfiguration; +import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.condition.ConditionalOnResource; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Role; import java.util.List; @@ -43,10 +45,10 @@ * @since 1.4.0 */ @Configuration +@Role(BeanDefinition.ROLE_INFRASTRUCTURE) @SuppressWarnings("SpringFacetCodeInspection") @ConditionalOnProperty(name = "shiro.enabled", matchIfMissing = true) public class ShiroAutoConfiguration extends AbstractShiroConfiguration { - @Bean @ConditionalOnMissingBean @Override diff --git a/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/boot/autoconfigure/ShiroBeanAutoConfiguration.java b/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/boot/autoconfigure/ShiroBeanAutoConfiguration.java index 9e9cbe1c31..fe7faf1d02 100644 --- a/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/boot/autoconfigure/ShiroBeanAutoConfiguration.java +++ b/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/boot/autoconfigure/ShiroBeanAutoConfiguration.java @@ -22,19 +22,22 @@ import org.apache.shiro.spring.LifecycleBeanPostProcessor; import org.apache.shiro.spring.config.AbstractShiroBeanConfiguration; import org.apache.shiro.spring.ShiroEventBusBeanPostProcessor; +import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Role; /** * @since 1.4.0 */ @Configuration +@Role(BeanDefinition.ROLE_INFRASTRUCTURE) @ConditionalOnProperty(name = "shiro.enabled", matchIfMissing = true) public class ShiroBeanAutoConfiguration extends AbstractShiroBeanConfiguration { - @Bean + @Role(BeanDefinition.ROLE_INFRASTRUCTURE) @ConditionalOnMissingBean @Override public LifecycleBeanPostProcessor lifecycleBeanPostProcessor() { @@ -42,6 +45,7 @@ public LifecycleBeanPostProcessor lifecycleBeanPostProcessor() { } @Bean + @Role(BeanDefinition.ROLE_INFRASTRUCTURE) @ConditionalOnMissingBean @Override protected EventBus eventBus() { @@ -49,6 +53,7 @@ protected EventBus eventBus() { } @Bean + @Role(BeanDefinition.ROLE_INFRASTRUCTURE) @ConditionalOnMissingBean @Override public ShiroEventBusBeanPostProcessor shiroEventBusAwareBeanPostProcessor() { diff --git a/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroWebAutoConfiguration.java b/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroWebAutoConfiguration.java index 49732ae2f1..aee40efe1c 100644 --- a/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroWebAutoConfiguration.java +++ b/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroWebAutoConfiguration.java @@ -37,6 +37,7 @@ import org.apache.shiro.spring.web.config.AbstractShiroWebConfiguration; import org.apache.shiro.spring.web.config.ShiroFilterChainDefinition; import org.apache.shiro.web.servlet.Cookie; +import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.AutoConfigureBefore; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; @@ -44,18 +45,20 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Role; /** * @since 1.4.0 */ @Configuration +@Role(BeanDefinition.ROLE_INFRASTRUCTURE) @AutoConfigureBefore(ShiroAutoConfiguration.class) @AutoConfigureAfter(ShiroWebMvcAutoConfiguration.class) @ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET) @ConditionalOnProperty(name = "shiro.web.enabled", matchIfMissing = true) public class ShiroWebAutoConfiguration extends AbstractShiroWebConfiguration { - @Bean + @Role(BeanDefinition.ROLE_INFRASTRUCTURE) @ConditionalOnMissingBean @Override protected AuthenticationStrategy authenticationStrategy() { @@ -63,6 +66,7 @@ protected AuthenticationStrategy authenticationStrategy() { } @Bean + @Role(BeanDefinition.ROLE_INFRASTRUCTURE) @ConditionalOnMissingBean @Override protected Authenticator authenticator() { @@ -70,6 +74,7 @@ protected Authenticator authenticator() { } @Bean + @Role(BeanDefinition.ROLE_INFRASTRUCTURE) @ConditionalOnMissingBean @Override protected Authorizer authorizer() { @@ -77,6 +82,7 @@ protected Authorizer authorizer() { } @Bean + @Role(BeanDefinition.ROLE_INFRASTRUCTURE) @ConditionalOnMissingBean @Override protected SubjectDAO subjectDAO() { @@ -84,6 +90,7 @@ protected SubjectDAO subjectDAO() { } @Bean + @Role(BeanDefinition.ROLE_INFRASTRUCTURE) @ConditionalOnMissingBean @Override protected SessionStorageEvaluator sessionStorageEvaluator() { @@ -91,6 +98,7 @@ protected SessionStorageEvaluator sessionStorageEvaluator() { } @Bean + @Role(BeanDefinition.ROLE_INFRASTRUCTURE) @ConditionalOnMissingBean @Override protected SubjectFactory subjectFactory() { @@ -98,6 +106,7 @@ protected SubjectFactory subjectFactory() { } @Bean + @Role(BeanDefinition.ROLE_INFRASTRUCTURE) @ConditionalOnMissingBean @Override protected SessionFactory sessionFactory() { @@ -105,6 +114,7 @@ protected SessionFactory sessionFactory() { } @Bean + @Role(BeanDefinition.ROLE_INFRASTRUCTURE) @ConditionalOnMissingBean @Override protected SessionDAO sessionDAO() { @@ -112,6 +122,7 @@ protected SessionDAO sessionDAO() { } @Bean + @Role(BeanDefinition.ROLE_INFRASTRUCTURE) @ConditionalOnMissingBean @Override protected SessionManager sessionManager() { @@ -119,6 +130,7 @@ protected SessionManager sessionManager() { } @Bean + @Role(BeanDefinition.ROLE_INFRASTRUCTURE) @ConditionalOnMissingBean @Override protected SessionsSecurityManager securityManager(List realms) { @@ -126,6 +138,7 @@ protected SessionsSecurityManager securityManager(List realms) { } @Bean + @Role(BeanDefinition.ROLE_INFRASTRUCTURE) @ConditionalOnMissingBean(name = "sessionCookieTemplate") @Override protected Cookie sessionCookieTemplate() { @@ -133,6 +146,7 @@ protected Cookie sessionCookieTemplate() { } @Bean + @Role(BeanDefinition.ROLE_INFRASTRUCTURE) @ConditionalOnMissingBean @Override protected RememberMeManager rememberMeManager() { @@ -140,6 +154,7 @@ protected RememberMeManager rememberMeManager() { } @Bean + @Role(BeanDefinition.ROLE_INFRASTRUCTURE) @ConditionalOnMissingBean(name = "rememberMeCookieTemplate") @Override protected Cookie rememberMeCookieTemplate() { @@ -147,6 +162,7 @@ protected Cookie rememberMeCookieTemplate() { } @Bean + @Role(BeanDefinition.ROLE_INFRASTRUCTURE) @ConditionalOnMissingBean @Override protected ShiroFilterChainDefinition shiroFilterChainDefinition() { @@ -154,6 +170,7 @@ protected ShiroFilterChainDefinition shiroFilterChainDefinition() { } @Bean + @Role(BeanDefinition.ROLE_INFRASTRUCTURE) @ConditionalOnMissingBean @Override protected ShiroUrlPathHelper shiroUrlPathHelper() { diff --git a/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroWebFilterConfiguration.java b/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroWebFilterConfiguration.java index 9a103a280c..606c276e34 100644 --- a/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroWebFilterConfiguration.java +++ b/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroWebFilterConfiguration.java @@ -21,12 +21,14 @@ import org.apache.shiro.spring.web.ShiroFilterFactoryBean; import org.apache.shiro.spring.web.config.AbstractShiroWebFilterConfiguration; import org.apache.shiro.web.servlet.AbstractShiroFilter; +import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Role; import javax.servlet.DispatcherType; import java.util.List; @@ -37,6 +39,7 @@ @Configuration @ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET) @ConditionalOnProperty(name = "shiro.web.enabled", matchIfMissing = true) +@Role(BeanDefinition.ROLE_INFRASTRUCTURE) public class ShiroWebFilterConfiguration extends AbstractShiroWebFilterConfiguration { /** @@ -70,6 +73,7 @@ protected FilterRegistrationBean filterShiroFilterRegistrat } @Bean(name = "globalFilters") + @Role(BeanDefinition.ROLE_INFRASTRUCTURE) @ConditionalOnMissingBean protected List globalFilters() { return super.globalFilters(); diff --git a/support/spring/src/main/java/org/apache/shiro/spring/config/ShiroBeanConfiguration.java b/support/spring/src/main/java/org/apache/shiro/spring/config/ShiroBeanConfiguration.java index 37e1321be6..505586c262 100644 --- a/support/spring/src/main/java/org/apache/shiro/spring/config/ShiroBeanConfiguration.java +++ b/support/spring/src/main/java/org/apache/shiro/spring/config/ShiroBeanConfiguration.java @@ -21,29 +21,35 @@ import org.apache.shiro.event.EventBus; import org.apache.shiro.spring.LifecycleBeanPostProcessor; import org.apache.shiro.spring.ShiroEventBusBeanPostProcessor; +import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Role; /** * @since 1.4.0 */ @Configuration +@Role(BeanDefinition.ROLE_INFRASTRUCTURE) public class ShiroBeanConfiguration extends AbstractShiroBeanConfiguration { @Bean @Override + @Role(BeanDefinition.ROLE_INFRASTRUCTURE) public LifecycleBeanPostProcessor lifecycleBeanPostProcessor() { return super.lifecycleBeanPostProcessor(); } @Bean @Override + @Role(BeanDefinition.ROLE_INFRASTRUCTURE) protected EventBus eventBus() { return super.eventBus(); } @Bean @Override + @Role(BeanDefinition.ROLE_INFRASTRUCTURE) public ShiroEventBusBeanPostProcessor shiroEventBusAwareBeanPostProcessor() { return super.shiroEventBusAwareBeanPostProcessor(); } diff --git a/support/spring/src/main/java/org/apache/shiro/spring/config/ShiroConfiguration.java b/support/spring/src/main/java/org/apache/shiro/spring/config/ShiroConfiguration.java index cb1db6e9ba..0c31ddd1ce 100644 --- a/support/spring/src/main/java/org/apache/shiro/spring/config/ShiroConfiguration.java +++ b/support/spring/src/main/java/org/apache/shiro/spring/config/ShiroConfiguration.java @@ -30,9 +30,11 @@ import org.apache.shiro.session.mgt.SessionFactory; import org.apache.shiro.session.mgt.SessionManager; import org.apache.shiro.session.mgt.eis.SessionDAO; +import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; +import org.springframework.context.annotation.Role; import java.util.List; @@ -40,7 +42,8 @@ * @since 1.4.0 */ @Configuration -@Import({ShiroBeanConfiguration.class}) +@Role(BeanDefinition.ROLE_INFRASTRUCTURE) +@Import(ShiroBeanConfiguration.class) public class ShiroConfiguration extends AbstractShiroConfiguration { diff --git a/support/spring/src/main/java/org/apache/shiro/spring/web/config/ShiroWebConfiguration.java b/support/spring/src/main/java/org/apache/shiro/spring/web/config/ShiroWebConfiguration.java index f86f1779fc..4ab8b52638 100644 --- a/support/spring/src/main/java/org/apache/shiro/spring/web/config/ShiroWebConfiguration.java +++ b/support/spring/src/main/java/org/apache/shiro/spring/web/config/ShiroWebConfiguration.java @@ -32,8 +32,10 @@ import org.apache.shiro.session.mgt.eis.SessionDAO; import org.apache.shiro.spring.web.ShiroUrlPathHelper; import org.apache.shiro.web.servlet.Cookie; +import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Role; import java.util.List; @@ -41,6 +43,7 @@ * @since 1.4.0 */ @Configuration +@Role(BeanDefinition.ROLE_INFRASTRUCTURE) public class ShiroWebConfiguration extends AbstractShiroWebConfiguration { @Bean