Skip to content

Simplify domain object dependency injection through use of generics [SPR-5920] #10589

Closed
@spring-projects-issues

Description

@spring-projects-issues

Ramnivas Laddad opened SPR-5920 and commented

Currently, users who extend AbstractInterfaceDrivenDependencyInjectionAspect need to have some knowledge of AspectJ constructs. Specifically, they need to know about the 'declare parents' construct and the pointcut syntax. With the help of generics, we should be able to remove both these issues paving the way for type-safe aspect that requires no/little knowledge of AspectJ.

So instead of:
aspect PricingStrategyDependencyInjectionAspect extends AbstractInterfaceDrivenDependencyInjectionAspect {
private PricingStrategy pricingStrategy;

	public pointcut inConfigurableBean() : within(PricingStrategyClient+);
	
	public void configureBean(Object bean) {
		((PricingStrategyClient)bean).setPricingStrategy(this.pricingStrategy);
	}
	
	declare parents: PricingStrategyClient implements ConfigurableObject;
	
	public void setPricingStrategy(PricingStrategy pricingStrategy) {
		this.pricingStrategy = pricingStrategy;
	}
}

they can write:

aspect PricingStrategyDependencyInjectionAspect extends GenericInterfaceDrivenDependencyInjectionAspect<PricingStrategyClient> {
	private PricingStrategy pricingStrategy;
	
	public void configure(PricingStrategyClient bean) {
		bean.setPricingStrategy(pricingStrategy);
	}
	
	public void setPricingStrategy(PricingStrategy pricingStrategy) {
		this.pricingStrategy = pricingStrategy;
	}
}

Affects: 3.0 M3

Referenced from: commits 29139df

Metadata

Metadata

Assignees

No one assigned

    Labels

    in: coreIssues in core modules (aop, beans, core, context, expression)type: enhancementA general enhancement

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions