1. A system for automatically provisioning resources based on application characteristics, comprising: a computer, including a microprocessor; a virtualized environment with one or more virtual machines therein, wherein the one or more virtual machines provide a plurality of software resources that include at least one or more application servers, one or more databases, and one or more message services; a template engine, executing on the computer, wherein the template engine includes a plurality of software templates registered therewith, wherein each software template defines a single one of the plurality of software resources provided in the virtualized environment, and a plurality of preconfigured settings, wherein each preconfigured setting specifies a set of software resources required for a particular type of application; wherein when the template engine receives an application for deployment, the template engine operates to determine a type of the application for deployment, identify, using a preconfigured setting associated with the determined application type, a default set of software resources for the application for deployment, identify one or more additional software resources for the application for deployment based on a preconfigured setting for a different application that shares a set of characteristics with the application for deployment, identify a plurality of software templates, based on the default set of software resources and the one or more additional software resources identified for the application for deployment, provision, in the virtualized environment, the identified software resources for the application for deployment using the plurality of identified templates for late binding to hardware resources by obtaining address information of the software resources, and deploys the application to the provisioned software resources using the address information, wherein the provisioned software resources are dynamically adjusted, including allocating additional software resources to the application or reducing the provisioned software resources based on performance of the application after the application is deployed.