Even though both are responsible for bean instantiation and wiring but there are some differences between them.
|Bean Factory||Application Context|
|Instantiate a bean when ever required. i.e Lazy Instantiation||Pre instantiate all the beans at the time of container creation|
|Doesn't support annotation based dependency injection||Supports annotation based injection|
|Doesn't publish events to listeners||Application contexts can publish events to beans that are registered as listeners|
|Doesn't provide support for internationalization i.e i18n||supports internationalization|
|Provides Basic IOC and DI (Dependency Injection) features||Application Context provides advanced features such as JNDI access, EJB integration, remoting, along with IOC and DI|