title: What is the difference between "constructor based injection" and " autowire by constructor mode" in Spring
body: <p>I know and understand constructor based injection. But, the autowiring modes confuse me. 
  1) I have read that default mode for autowiring is 'no autowiring' i.e. We have to manually set the properties in xml file. But, isn't xml based configuration a type of autowiring? How can it be considered 'No autowiring'?
  2) Other modes for autowiring are i) byName ii) byType iii)constructor iv) auto-detect. Am i correct to assume the following:</p>
  
  <p>a) When using xml configuration based autowiring, the default mode is 'byName'(i.e. I have to keep the name of property reference the same as the name of the bean which is being used as a property.)</p>
  
  <p>b) When using Annotations, default mode is 'byType'( Regardless of the place the @Autowired keyword is placed i.e on the setter, on the constructor or on the property, it will search the type of the property being autowried)</p>
  
  <p>3) What is the difference between constructor based injection and 'constructor' mode of autowiring?(I have read that constructor mode means it applies byType mode on all the constructor arguments, but how is it different from placing @Autowired keyword on the constructor)</p>
  
  <p>4) I know that to enable autowired mode byName in annotations, in the bean definition in the xml file, I have to use " autowire = 'byName' ". But, suppose I am using Annotations only config( using @Component, and no bean definitions in the xml ), and I want to use byName autowire mode, then what is the way of doing that?</p>