@Override
	@RequestMapping(value = "/definitions", method = RequestMethod.POST)
	@ResponseStatus(HttpStatus.CREATED)
	public void save(@RequestParam("name") String name, @RequestParam("definition") String definition,
			@RequestParam(value = "deploy", defaultValue = "true") boolean deploy) throws Exception {
		// Verify if the batch job repository already has the job with the same name.
		if (distributedJobLocator.getJobNames().contains(name)) {
			throw new BatchJobAlreadyExistsException(name);
		}
		if(ComposedJobUtil.isComposedJobDefinition(definition)) {
			moduleDefinitionService.compose(ComposedJobUtil.getComposedJobModuleName(name), ModuleType.job, definition, false);
		}
		else {
			ComposedJobUtil.validateNotSingleJobInstance(definition, distributedJobLocator.getJobNames());
		}
		super.save(name, definition, deploy);
	}
Handles all Job related interactions.

@author Glenn Renfro
@author Gunnar Hillert
@author Ilayaperumal Gopinathan
@author David Turanski
spring-xd-dirt/src/main/java/org/springframework/xd/dirt/rest/JobsController.java