SpringBoot项目创建,三层架构,分成结构,IOC,DI相关,@Resource与@Autowired的区别
Spring官网:Spring | Home
项目创建问题
如果Spring官方脚手架创建失败可以使用阿里云URL地址创建。点击Sever URL后面的齿轮,输入https://start.aliyun.com
三层架构:
分层结构:
@Autowired //表示自动注入依赖 private UserDao userDao;
IOC
要把某个对象交给IOC容器管理,需要在对应的类上加上如下注解之一:
注意:申明bean时,可以通过注解的value属性指定bean的名字,如果没有指定,默认为类名首字母小写。
DI
基于@Autowired进行依赖注入的常见方式有如下三种:
1.
优点:代码简洁、方便快速开发
缺点:隐藏了类之间的依赖关系、可能破坏类的封装性
2.
优点:能清晰的看见类的依赖关系、提高了代码的安全性
缺点:代码繁琐、如果构造参数过多,可能导致构造函数臃肿 当前类中只存在一个构造函数的时候,@Autowired可以省略
3.
优点:保持了类的封装性,依赖关系更清晰
缺点:需要额外编写setter方法,增加了代码量
-
@Autowired注解,默认是按照类型进行注入的。
-
如果存在多个相同类型的bean,将会报错:
对于这种情况,在这里提供三种解决方案:
-
@Primary:提升某个bean的优先级,从而注入指定的这个bean。
-
@Autowired+@Qualifier:指定要注入的bean。
-
@Resource:指定要注入bean的名字。
@Resource与@Autowired的区别
-
@Autowired是Spring框架提供的注解,而@Resource是JavaEE规范提供的
-
@Autowired默认是按照类型注入,而@Resource默认是按照名称注入