In essence, the framework is designed to liberate productivity and prov
ide a general solution to reduce complexity. 
 how complex requirements can be encountered when you are self-taught, so you can't continue to add, delete, modify and search basically. After all, most businesses are really enough from  DAO  to  Controller .  CRUD  is enough (design patterns, architecture design, layering, etc., are not discussed here, it all depends on the scenario). 
 it is said that design patterns are good, convenient for refactoring, improving abstraction, and decoupling, but the problem to be solved is not of that magnitude. According to  copy  a  demo , you may still not know what is good about this thing. 
 so the personal practice is to choose a framework (see your description,  Spring Framework  should be more appropriate) before meeting more complex requirements, read the official documentation to understand how it exposes interfaces to the outside world, and the names of those interfaces can generally be seen as what design patterns it uses to achieve decoupling. So it can be said to kill many birds with one stone: learn more about  Spring , observe the practice of design patterns, and trace the source code to exercise debugging skills. 
 of course,  Spring  this kind of thing is too big and complete, even a  Hello World  is a twist, and a  Context Loader  is very complicated, so let's start with the earlier version. 
 Spring Framework  
 this is the earliest  Spring Framework  that I can find.  0.9  version 6.61m is not afraid. 
 see what's inside: 
 compiled jar, can ignore 
 



 
 
 download  spring-framework-0.9.zip , extract, and import IDE. 
  / samples/skeletons/webapp-minimal  this is the smallest skeleton sample ( pagedlist  and  petclinic  are translated to combine some sample scenarios, while  webapp-aop  and  webapp-hibernate  introduce some external packages or something) 
 go straight to  / WEB-INF/web.xml , and you can see 
   Writing demo is just using the basics over and over again, and you'll forget it if you don't use it for a while. The best way is to participate in a certain degree of difficult development, such as going to Github to pull a few projects that are currently understandable but more difficult to study, look at them before you change them, and achieve some of your own functions. After completing one, you will find that the details will be improved.