I had written class which extends “AbstractTransactionalSpringContextTests” for testing my beans instantiated via spring framework .
I had annotated all java classes eligible for spring to load with @Service,@Autowire,@Qualifier in XML along with component scanning with pkg which has annotated classes .
Issue I face when I tried to inject properties (with autowire ) for classes which is not apart of component scanning ( I purposefully left those packages in scanning, as I am not interested in testing / loading the class)
Spring does because required is set to true by default in Autowired class. Hence to resolve this issue , I added “default-lazy-init="true" in xml , which resolved my issue .
Even with “AbstractTransactionalSpringContextTests” we have that option using “setDependencyCheck(false) ".it is not working as expected .
I prefer way to do in test class level , rather than changing xml ( FYI going fwd we would like to use same XML for application and testing )
I still don't think lazy loading is your real true solution to your problem. Yes, it solves it, but isn't what lazy loading is there for to resolve.
In your main application if you put required=false doesn't mean that it won't autowire it. It means if you don't have a bean of that type, that is fine, it is not set and null. But if there is a bean of that type, then it is set to that bean.