Enjoying This Tutorial?
Subscribe to Ram N Java for high-quality, practical Java and Spring tutorials!
SUBSCRIBE NOWIntroduction
Auto-wiring in the Spring Framework allows the IoC container to automatically resolve and inject dependencies between collaborating beans. By default, Spring sets the autowiring mode to no (or default). In this mode, Spring does not automatically wire any collaborator beans; all dependencies must be explicitly wired by the developer.
What Is "no" Auto-Wiring Mode?
- Default Configuration: When you do not specify an
autowireattribute on the<bean>tag, Spring defaults toautowire="no". - Explicit Wiring Required: All object references must be explicitly defined using
<property ref="..."/>or<constructor-arg ref="..."/>tags. - Maximum Clarity and Control: While it requires slightly more XML code, explicit wiring prevents accidental wiring errors and makes large application configurations easy to track and audit.
Step-by-Step Configuration Example
Here is an example showing how beans are configured when autowire="no" is in effect:
1. Bean Configuration in applicationContext.xml
Dependencies are explicitly linked using the ref attribute:
<!-- Dependent Bean -->
<bean id="address" class="com.ram.model.Address">
<property name="city" value="Bangalore" />
<property name="state" value="Karnataka" />
</bean>
<!-- Bean configured with autowire="no" (explicit wiring required) -->
<bean id="employee" class="com.ram.model.Employee" autowire="no">
<property name="id" value="101" />
<property name="name" value="Ram" />
<property name="address" ref="address" />
</bean>
2. Executing with ApplicationContext
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
Employee emp = (Employee) context.getBean("employee");
emp.displayInfo();
Key Takeaway
The autowire="no" setting is best suited for complex enterprise systems where explicit configuration is preferred to prevent ambiguity and ensure complete transparency over how components interact and wire together.
Recommended Auto-Wiring Tutorials from Ram N Java
Click here to watch on Youtube:
https://www.youtube.com/watch?v=7hsOwqdiZYI&list=UUhwKlOVR041tngjerWxVccw
Click the below Image to Enlarge:
![]() |
| What is no Auto-wiring mode in Spring? |
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0%20http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.ram.core</groupId>
<artifactId>SpringDemo</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>SpringDemo</name>
<url>http://maven.apache.org</url>
<properties>
<spring.version>5.0.2.RELEASE</spring.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- Spring 5 dependencies -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
</project>
Address.java
public class Address
{
private String city;
private String state;
private String country;
public Address(String city, String state, String country)
{
this.city = city;
this.state = state;
this.country = country;
}
@Override
public String toString()
{
return "Address [city=" + city + ", state=" + state + ", country="
+ country + "]";
}
}
Employee.java
public class Employee
{
private String name;
private Address address;
public Employee(String name)
{
System.out.println("Employee(String name) constructor "
+ "is called by the Spring container");
this.name = name;
}
public Employee(String name, Address address)
{
System.out.println("Employee(String name, Address address) "
+ "constructor is called by the Spring container");
this.name = name;
this.address = address;
}
public void displayEmployeeDetails()
{
System.out.println(
"Employee [name=" + name + ", address=" + address + "]");
}
}
applicationContext.xml
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-4.3.xsd">
<bean id="address" class="com.ram.model.Address" >
<constructor-arg value="Chennai"></constructor-arg>
<constructor-arg value="Tamil Nadu"></constructor-arg>
<constructor-arg value="India"></constructor-arg>
</bean>
<bean id="employee" class="com.ram.model.Employee" autowire="no">
<constructor-arg value="Peter"></constructor-arg>
</bean>
</beans>
App.java
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.ram.model.Employee;
public class App
{
public static void main(String[] args)
{
ApplicationContext context = new ClassPathXmlApplicationContext(
"applicationContext.xml");
System.out.println("---------------------------------------");
Employee employee = (Employee) context.getBean("employee");
System.out.println(
"Got employee object from the ApplicationContext[Spring Container]");
employee.displayEmployeeDetails();
}
}
Output
INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@5b37e0d2: startup date [Tue Jul 03 09:15:42 IST 2018]; root of context hierarchy
Jul 03, 2018 9:15:42 AM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [applicationContext.xml]
Employee(String name) constructor is called by the Spring container
---------------------------------------
Got employee object from the ApplicationContext[Spring Container]
Employee [name=Peter, address=null]
Click the below link to download the code:
https://sites.google.com/site/ramj2eev2/java_basics/SpringDemo_no_Autowiring.zip?attredirects=0&d=1
Github Link:
https://github.com/ramram43210/javaee/tree/master/Spring_2018/SpringDemo_no_Autowiring
Bitbucket Link:
https://bitbucket.org/ramram43210/spring/src/a2a3948db9c8932cede027a3aaf7ba5a87170ed8/Spring_2018/SpringDemo_no_Autowiring/?at=master
See also:

