My inference is, when using bean attribute, it does not do XML validation
That's right.
I found XML validation occurs to check if a bean with that id exists or not, even when using bean attribute.
Are you sure ? Which excpetion was thrown ? If you are using an ApplicationContext, your bean will be automatically instanciated (unless you use lazy-init), and an instanciation error will occur, but not an xml parsing error.
When using "local", Spring will check the presence of the referenced bean during the xml parsing. Whether you use that bean in your application or not, it will check that it is properly declared. If not, you'll get an XmlBeanDefinitionStoreException.
When using "bean", Spring will check the presence of the referenced bean when the bean referencing it is instanciated, not during the xml parsing. Which means that even if the bean does not exist, and you do not use the bean referencing an unknown bean, your application will work. For example :
If mickDo does not exist, and the mick bean is not used, the application will work. If the mick bean is instanciated, BeanCreationException will be thrown.