@Bean @ConditionalOnProperty(value = "jsf.scope-configurer.jsf.enabled", havingValue = "true", matchIfMissing = true) public static BeanFactoryPostProcessor jsfScopeAnnotationsConfigurer(Environment environment) { CustomScopeAnnotationConfigurer scopeAnnotationConfigurer = new CustomScopeAnnotationConfigurer(); scopeAnnotationConfigurer.setOrder(environment.getProperty("jsf.scope-configurer.jsf.order", Integer.class, Ordered.LOWEST_PRECEDENCE)); scopeAnnotationConfigurer.addMapping(NoneScoped.class, ConfigurableBeanFactory.SCOPE_PROTOTYPE); scopeAnnotationConfigurer.addMapping(RequestScoped.class, WebApplicationContext.SCOPE_REQUEST); scopeAnnotationConfigurer.addMapping(javax.faces.bean.ViewScoped.class, ViewScope.SCOPE_VIEW); scopeAnnotationConfigurer.addMapping(javax.faces.view.ViewScoped.class, ViewScope.SCOPE_VIEW); scopeAnnotationConfigurer.addMapping(SessionScoped.class, WebApplicationContext.SCOPE_SESSION); scopeAnnotationConfigurer.addMapping(ApplicationScoped.class, WebApplicationContext.SCOPE_APPLICATION); return scopeAnnotationConfigurer; }
@PostConstruct protected void init() { Map<String, Class> values = new HashMap<String, Class>(); values.put("value", RequestScoped.class); Class<? extends Annotation> initializedAnnotationClass = ClassUtils.tryToLoadClassForName("javax.enterprise.context.Initialized"); if (initializedAnnotationClass != null) { this.initializedAnnotationInstance = AnnotationInstanceProvider.of(initializedAnnotationClass, values); } Class<? extends Annotation> destroyedAnnotationClass = ClassUtils.tryToLoadClassForName("javax.enterprise.context.Destroyed"); if (destroyedAnnotationClass != null) { this.destroyedAnnotationInstance = AnnotationInstanceProvider.of(destroyedAnnotationClass, values); } }
/** * Ignore ViewScoped, SessionScoped, RequestScoped and NoneScoped annotations * because spring will take care of them. * @return set of annotations to exclude from handlesType */ private Set<Class<? extends Annotation>> annotationsToExclude() { Set<Class<? extends Annotation>> result = new HashSet<>(); if (this.jsfAnnotatedClassFactoryConfiguration.isExcludeScopedAnnotations()) { result.add(ViewScoped.class); result.add(SessionScoped.class); result.add(RequestScoped.class); result.add(NoneScoped.class); } return result; }