Normally you declare all the beans or components in XML bean configuration file, so that Spring container can detect and register your beans or components. Actually, Spring is able to auto scan, detect and instantiate your beans from pre-defined project package, no more tedious beans declaration in in XML file.
Following is a simple Spring project, including a customer service and dao layer. Let’s explore the different between declare components manually and auto components scanning in Spring.

1. Declares Components Manually

See a normal way to declare a bean in Spring.
Normal bean.
package com.mkyong.customer.dao;
 
public class CustomerDAO 
{
 @Override
 public String toString() {
  return "Hello , This is CustomerDAO";
 } 
}
DAO layer.
package com.mkyong.customer.services;
 
import com.mkyong.customer.dao.CustomerDAO;
 
public class CustomerService 
{
 CustomerDAO customerDAO;
 
 public void setCustomerDAO(CustomerDAO customerDAO) {
  this.customerDAO = customerDAO;
 }
 
 @Override
 public String toString() {
  return "CustomerService [customerDAO=" + customerDAO + "]";
 }
 
}
Bean configuration file (Spring-Customer.xml), a normal bean configuration in Spring.
 xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.springframework.org/schema/beans
 http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
 
  id="customerService" class="com.mkyong.customer.services.CustomerService">
   name="customerDAO" ref="customerDAO" />