
十年前我刚入行的时候接手的第一个Spring项目光配置文件就有十几个。applicationContext.xml里密密麻麻全是bean标签一个Service要配三五行一百个Service就是三五百行。改个依赖关系要在几百行的XML里找到对应的ref改错了IDE不报错非要等到应用启动才发现。那时候最怕的事情就是改配置文件——改完重启等两分钟报错再改再重启。那段日子被圈内人戏称为配置地狱。后来Spring Boot来了。一开始我还很抗拒——不用XML怎么配Bean直到用了SpringBootApplication注解的那一刻我才明白什么叫开发体验的降维打击。从几百行XML到一行注解先看XML时代的标准写法。注册一个Service、注入它的依赖、再注册一个Controller、再注入Service——每个Bean都要写一个bean标签xml复制下载运行bean iduserRepository classcom.example.repo.UserRepositoryImpl/ bean iduserService classcom.example.service.UserService property nameuserRepository refuserRepository/ /bean bean iduserController classcom.example.web.UserController property nameuserService refuserService/ /bean这才三个Bean项目稍微大一点XML文件动辄上千行。ID写错一个字、ref引错一个Bean全部运行时才报错。代码在Java文件里依赖关系在XML文件里来回跳转的功夫比写代码还多。同样的功能用注解怎么写java复制下载Repository public class UserRepositoryImpl implements UserRepository {} Service public class UserService { Autowired private UserRepository userRepository; } RestController RequestMapping(/api/users) public class UserController { Autowired private UserService userService; }三段代码三个注解依赖关系一目了然。IDE直接支持跳转改错了编译期就报错。代码和配置终于在一起了这才是写代码该有的体验。真正让人爽的是SpringBootApplication如果说上面的注解只是好用那SpringBootApplication就是颠覆。XML时代启动一个Web应用至少要配置web.xml、配置Spring容器、配置DispatcherServlet、配置组件扫描路径……一套流程走下来半天没了。而SpringBootApplication一个注解干了四件事标记配置类、开启自动配置、启动组件扫描——你只需要把它放在启动类上告诉Spring Boot我要启动了剩下的它全帮你搞定。更狠的是自动配置。你在pom.xml里加了spring-boot-starter-webSpring Boot自动给你配好Tomcat和Spring MVC加了spring-boot-starter-data-jpa自动配好数据源和事务管理器。什么XML都不用写框架根据你引的依赖自己猜你想怎么配。这在当年简直是魔法。不只是少了几个文件有人可能会说不就是少了几个配置文件吗至于这么爽至于。因为少的不只是文件是心智负担。XML时代每加一个类就要想这个类要不要注册成Bean注册了要在哪个XML里写ref叫什么名字每改一个依赖就要在两个文件之间来回切。写代码的时间还没配置的时间多。注解时代这些全没了。Service标上就是BeanAutowired一写依赖就注入GetMapping一放接口就有了。开发者终于可以从怎么配置的泥潭里抽身专心思考业务怎么写。这就好比以前你要做一顿饭得先自己生火、劈柴、搭灶台现在你打开燃气灶火就有了。燃气灶不是帮你省了生火的那几分钟而是让你彻底不用去想火从哪来这件事。写在最后当然注解不是完美的。配置分散在代码各处、与框架耦合变深这些都是真实存在的问题。但对于绝大多数业务系统来说用20%的灵活性代价换取80%的开发效率提升这笔账怎么算都划算。从XML到注解Spring Boot做的不是简单的换个写法而是重新定义了Java后端开发的工作方式——让开发者从配置细节中解放出来回归到业务本身。这种爽只有经历过XML时代的人才能真正体会。如果你还在用XML配Spring赶紧试试注解吧。有些快乐试过才知道。