You can use an instance factory method to shift the control of creating the instance from a container to your custom object. The only difference between an instance factory method and a static factory method is that the former can only be invoked with an instance of bean. Let's understand this by taking the following example:
public class Employee { private String type; public Employee(String type) { this.type = type; } public void showType() { System.out.println("Type is :"+type); }}public class Developer extends Employee { public Developer(String type) { super(type); }}public class Manager extends Employee { public Manager(String type) { super(type); }}//Factory Bean who has Factory method.public class ...