In below code , when methodInner() is called from within methodOuter, should be under transaction bounds. But it is not. But when methodInner() is called directly from MyController class , it is bound by transaction. Any explanations?
This is controller class.
@Controller
public class MyController {
    @Autowired
    @Qualifier("abcService")
    private MyService serviceObj;
    public void anymethod() {
        // below call cause exception from methodInner as no transaction exists  
        serviceObj.methodOuter(); 
    }
}
This is service class.
@Service("abcService")
public class MyService {
    public void methodOuter() {
        methodInner();
    }
    @Transactional
    public void methodInner() {
    .....
    //does db operation.
    .....
    }
}