【Spring核心思想:IoC】
spring是一个开源框架,支持广泛的应用场景,简而言之:Spring是包含了众多工具方法的IoC容器
【IoC】
IoC的意思是「控制反转」,也就是说Spring是一个“控制反转”的容器
通用程序的实现代码,类的创建顺序是反的,如果想改tire需要连同之前的一起改,很麻烦
改进后控制权发生了反转,不再是使用方对象创建并依赖对象,而是把依赖对象注入当前对象中,依赖对象的控制权不再由当前类控制,这样即便再怎么改都不会影响当前类
也就是说,IoC控制反转,就是将对象的控制权交给Spring的IoC容器,由IoC容器创建及管理对象,也就是「Bean」的存储
【DI】
依赖注入,把依赖注入到当前对象中
【IoC&DI的使用】
「@Component」
该注解会把关联的类放入到IoC容器中(IoC用法)
「@Autowired」
该注解会把关联的类从IoC容器中取出(DI用法)
有了IoC容器,就不用那么麻烦地自己存储对象了
【Bean的存储】
Spring框架提供了丰富的注解用于把对象交给IoC容器来管理,分两类
类注解:@Controller,@Service,@Repository,@Component,@Configuration
方法注解:@Bean
【@Controller】
加上这样的注解后,Spring也会帮我们管理这个对象
@Service,@Component,@Configuration这四个注解也是如此,这些注解的功能都是相同的
【为什么有这么多注解?】
这与「应用分层」相呼应,让程序员看到类注解后,就能直接了解当前类的用途
应用分层:
Controller:控制层,接收前端发送的请求,对请求进行处理,并响应数据
Service:业务逻辑层,处理具体的业务逻辑
Dao:数据访问层,也称为持久层,负责数据的访问操作,包括增删改查
————————
@Controller:i控制层的注解
@Service:业务逻辑层的注解
@Repository:数据访问层的注解
@Configuration:配置层(处理项目中的一些配置信息的注解
@Component:也可以写在配置层的注解,一般与@Configuration混用,划分的不严格
这些注解是@Component的衍生注解
【@Bean】
加在方法上的注解
需要使用「@AllArgsConstructor」和「@NoArgsConstructor」注解
意味着不带参数的构造方法和带参数的构造方法
加上后就会自动为方法生成这两种构造方法
这样做(在UserInfoComponent中创建对象)的好处是,把所有创建的对象都放到了一个方法中,把这个方法交给spring管理
但如果放了多个对象,在main函数中的语句就是不正确的,因为spring不知道要拿哪个对象,这会报错,所以我们要根据名称去拿
通过这个代码,我们可以拿出“userInfo1”的对象,lisi
因此,如果一个类有多个对象,我们就必须要根据对象名称来获取
【重命名Bean】
在注解中添加name参数可以对方法进行重命名
这样一来,在该代码中,就无法通过方法原本的名称“userinfo”去获取了,只能根据Bean注解指定的name来获取
我们可以同时指定多个name参数(因为其底层机理是一个数组,可以同时指定多个参数)
这样一来,在该代码中,就可以通过方法原本的名称“userinfo”去获取了