SecuritySpelBridgeConfig.java
package com.smartsupplypro.inventory.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
/**
* SpEL integration bridge for security expressions.
*
* <p>Exposes AppProperties under named bean for method-level security expressions.
* Enables conditional authorization using {@code @appProperties.demoReadonly} in
* {@code @PreAuthorize} annotations.</p>
*
* <p><strong>Enterprise Pattern:</strong> Bridges configuration properties into SpEL context
* for declarative security rules without coupling security logic to business logic.</p>
*/
@Configuration
public class SecuritySpelBridgeConfig {
/**
* Primary AppProperties bean with named alias for SpEL expressions.
*
* <p>Creates {@code @Primary} bean accessible as both {@code AppProperties} type
* and {@code "appProperties"} name for method security SpEL integration.</p>
*/
@Bean("appProperties")
@Primary
public AppProperties appPropertiesPrimary(AppProperties props) {
return props; // same managed instance, just an alias name
}
}