我可以想到两种可能性。
1)设置静态参考。(尽管通常不赞成使用静态变量,但在这种情况下可以,因为只能有1个命令行调用)。
public class MyApp { public static String[] ARGS; public static void main(String[] args) { ARGS = args; // create context }}然后,您可以通过以下方式在Spring中引用命令行参数:
<util:constant static-field="MyApp.ARGS"/>
或者(如果您完全反对静态变量),则可以:
2)以编程方式将args添加到应用程序上下文中:
public class MyApp2 { public static void main(String[] args) { DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory(); // Define a bean and register it BeanDefinition beanDefinition = BeanDefinitionBuilder. rootBeanDefinition(Arrays.class, "asList") .addConstructorArgValue(args).getBeanDefinition(); beanFactory.registerBeanDefinition("args", beanDefinition); GenericApplicationContext cmdArgCxt = new GenericApplicationContext(beanFactory); // Must call refresh to initialize context cmdArgCxt.refresh(); // Create application context, passing command line context as parent ApplicationContext mainContext = new ClassPathXmlApplicationContext(CONFIG_LOCATIONS, cmdArgCxt); // See if it's in the context System.out.println("Args: " + mainContext.getBean("args")); } private static String[] CONFIG_LOCATIONS = new String[] { "applicationContext.xml" }; }解析命令行参数留给读者练习。



