Spring是用来管理业务层的框架(通过集成持久层框架也可以用来管理持久层),主要的两大功能是控制反转和面向切面编程,主要目的是实现程序的解耦。
SpringMVC是用来管理控制层的框架,主要是实现和WEB的交互。注意不要直接在控制层编写业务代码,至少就目前我接触到的项目而言,控制层方法中一般都只有一行代码,那就是业务层的方法调用。
SpringBoot可以说是对Spring和SpringMVC的综合,并提供了一种更加简单直接的使用方式,主要优势是“习惯优于配置”,省去了Spring中繁琐的配置;并且提供了起步依赖,解决了Spring中依赖JAR包冲突的问题。SpringBoot中使用的基本上都是Spring和MVC中的注解,但是它另外有自己专属的yml文件配置方式。
生成类对象
用在类上,用于生成当前类对象并把它存入ioc容器中。
@Component,通用的
@Controller,一般用在控制层
@Service,一般用在业务逻辑层
@Repository:一般用在持久层
这些注解有一个属性value,用于指定唯一标识id。如果不写,默认就是当前类名(首字母改小写)
这里有个地方要注意,这四个注解不需要在接口或者抽象类上使用,而是在对应实现类或子类上使用。根据多态原理,我实际上需要的就是这些实现类的对象。
注入对象
当需要在某个类中调用其它类的方法,就需要其他类的对象,不必自己去new,这样耦合性太高。使用依赖注入即可。
用在定义的类属性上,通常用于注入对象。
@AutoWired,自动根据类型进行注入,如果ioc容器中有唯一的bean对象类型和要注入的变量匹配,则可以注入成功;
@Qualifier(value = “指定的id”),如果容器中有多个bean对象类型和要注入的变量匹配(比如调用接口时该接口有多个实现类),
则需要再次根据id匹配来注入,如果有指定的id,则可注入成功。该注解需要和@AutoWired一起使用。
@Resouce(name = “指定的id”),直接根据id名来注入。可以单独使用。
如果要注入基本类型数据,使用@Value注解即可
<