One way I can think of is:
0. Declare all the transports as you have already done in the OP.
1. Write a BeanFactoryPostProcessor that reads the transport type from a properties file, and registers some transport-type-agnostic aliases for the transports. E.g., if the transport type, "X" or "Y", is read into variable transportType, you'd do:
Code:
factory.registerAlias( transportType + "TransportForA", "transportForA");
factory.registerAlias( transportType + "TransportForB", "transportForB");
2. Now the code getting the bean can do:
Code:
appContext.getBean("transportFor" + businessType);
Oh well, maybe I have just made it overly complicated...