09 — Advanced

Configuration Reference

This page collects every configuration property, bean name constant, and auto-configured bean in one place for quick reference.

Application Properties

Property Default Description
rulii.converts.registerDefaults true Register rulii's built-in type converters. Set to false to use only custom converters.

Bean Name Constants

The BeanNames class defines the internal bean names used by rulii-spring. Use these constants when you need to reference beans by name (e.g., in @Qualifier annotations).

Constant Value Bean Type
OBJECT_FACTORY_NAME "rulii.objectFactory" ObjectFactory
SPRING_CONVERTER_REGISTRY "rulii.converterRegistry" ConverterRegistry
RULE_REGISTRY "rulii.ruleRegistry" RuleRegistry

Auto-Configured Beans

All beans are defined in RuleConfig and can be overridden by declaring your own @Bean of the same type.

Bean Type Default Implementation Named Bean?
BindingMatchingStrategy Default (builder) No
ParameterResolver Default (builder) No
MessageResolver SpringEnvironmentMessageResolver No
MessageFormatter Default (builder) No
ObjectFactory SpringObjectFactory rulii.objectFactory
ConverterRegistry Default + SpringConverterAdapter rulii.converterRegistry
RuleRegistry SpringRuleRegistry rulii.ruleRegistry
RuleContextOptions SpringEnabledRuleContextOptions No
RuleBeanDefinitionRegistryPostProcessor Fallback scanner No

Bean Dependency Diagram

The following shows how the auto-configured beans relate to each other:


RuleContextOptions
  ├── BindingMatchingStrategy
  ├── ParameterResolver
  ├── MessageFormatter
  ├── MessageResolver
  │     └── SpringEnvironmentMessageResolver
  │           └── Environment
  ├── ObjectFactory
  │     └── SpringObjectFactory
  │           └── AutowireCapableBeanFactory
  └── ConverterRegistry
        ├── Default converters (if registerDefaults=true)
        ├── Custom Converter beans
        └── SpringConverterAdapter
              └── ConversionService

RuleRegistry
  └── SpringRuleRegistry
        └── ListableBeanFactory

RuleBeanDefinitionRegistryPostProcessor (fallback, if no @RuleScan)
  └── AutoConfigurationPackages

Customizing a Bean

To override any auto-configured bean, declare your own with the matching type. For example, to customize the RuleContextOptions:

@Configuration
public class CustomRuleConfig {

    @Bean
    public RuleContextOptions ruleContextOptions(
            BindingMatchingStrategy matchingStrategy,
            ParameterResolver parameterResolver,
            MessageFormatter messageFormatter,
            ConverterRegistry converterRegistry,
            ObjectFactory objectFactory,
            MessageResolver messageResolver) {
        return new SpringEnabledRuleContextOptions(
            matchingStrategy, parameterResolver, messageFormatter,
            converterRegistry, objectFactory, messageResolver,
            Executors.newVirtualThreadPerTaskExecutor(),  // virtual threads!
            Clock.systemUTC(),                           // UTC clock
            Locale.ENGLISH);                              // fixed locale
    }
}

Package Structure

org.rulii.spring
├── annotation
│     └── RuleScan
├── bind.load
│     └── SpringContextBindingLoader
├── config
│     ├── BeanNames
│     ├── RuleConfig
│     ├── RuleBeanBuilder
│     ├── RuleBeanDefinitionRegistryPostProcessor
│     ├── RuleBeanDefinitionScanner
│     ├── RuleRegistrar
│     └── RuleRegistrarMetaInfo
├── context
│     └── SpringEnabledRuleContextOptions
├── convert
│     ├── ResolvableTypeDescriptor
│     └── SpringConverterAdapter
├── factory
│     └── SpringObjectFactory
├── registry
│     └── SpringRuleRegistry
└── text
      └── SpringEnvironmentMessageResolver