How spring mvc works internally