the AuraEnabled methods are required to provide server side access to a controller and for salesforce, all server side controllers need to be static so that all the instances of the components share one static controller. If you are wondereing why is it so? The answer is, thats make the Lightning components modular, that being said different lightning components can work independently. Thats my understanding.
because lightning framework is stateful client(javaScript) and stateless server(apex) This structure allows the client to call the server only when absolutely necessary. With fewer calls to the server, your apps are more responsive and efficient. due to stateless server feature it can only access static methods with @AuraEnabled
the AuraEnabled methods are required to provide server side access to a controller and for salesforce, all server side controllers need to be static so that all the instances of the components share one static controller. If you are wondereing why is it so? The answer is, thats make the Lightning components modular, that being said different lightning components can work independently. Thats my understanding.
Thanks let me know if it helps you
http://sfdcmonkey.com