spring框架的作用

Spring框架的作用

主要解决了创建对象和管理对象的问题。 (IoC 控制反转)

在使用Spring框架后,当需要某个对象时,直接通过Spring获取此对象即可。

Spring可以保证类的对象的唯一性,使得各组件出现依赖关系时,不会创建多个相同的对象。

由于Spring会创建很多个对象并管理起来,开发者需要时直接获取即可,所以,Spring也通常被称之为“Spring容器”。

通过Spring创建并管理对象–组件扫描

Spring提供了组件扫描的机制,它可以扫描指定的包,并查找此包及其子孙包下是否存在组件类,
判定组件类的标准是类上是否存在组件注解,基础的组件注解有:

  • @Component
  • @Controller
  • @Service
  • @Repository

在Spring框架的解释中,以上4个注解是完全等效的,只是语义不同。

所以,当某个类需要被Spring框架创建对象时,需要:

  1. 确保这个类在组件扫描的范围之内
  2. 确保这个类添加了组件注解

提示:在Spring Boot项目中,默认就已经配置好了组件扫描,扫描的根包就是创建项目时已存在的包。

通过Spring创建并管理对象–@Bean方法

在Spring框架的使用中,如果某个类添加了@Configuration注解,则此类将是“配置类”。

注意:配置类也必须在组件扫描的范围内。

在配置类中,可以自行添加一些方法,在方法上添加@Bean注解,则此方法会被Spring自动调用,且方法返回的对象也会被Spring管理。

在同一个配置类中,允许存在多个@Bean方法。

关于方法的声明:

  • 访问权限:应该是public
  • 返回值类型:你希望Spring管理的对象的类型
  • 方法体:应该正确的返回与声明匹配的对象
  • 方法名称:自定义

所以,当某个类需要被Spring框架管理对象时,需要:

  • 在配置类中添加@Bean方法,使用此方法返回需要被管理的对象

如何选择创建并管理对象的方式

仅自定义的类型可以使用组件扫描的方式,当然,自定义的类型也可以使用@Bean方法的做法,但是不推荐。

非自定义的类型不可以使用组件扫描的方式(因为你没有办法在这些类型上添加组件注解),只能使用@Bean方法的做法。

自动装配

当某个属性需要值时,或被Spring调用的方法需要参数值时,Spring框架会自动从容器中查找符合的对象,自动为属性或方法的参数赋值。

在属性上,添加@Autowired注解,即可使得Spring尝试自动装配。

组件扫描

在Spring框架中,通过@ComponentScan注解,即可配置组件扫描

在Spring Boot项目中,默认即存在的类(有main()方法的那个类)上添加了@SpringBootApplication注解,此注解的源代码中包含@ComponentScan

在Spring Boot项目中,无论是执行默认即存在的类的main()方法,还是执行带@SpringBootTest注解的类中的测试方法,都会加载整个项目的配置,所以,组件扫描是已启动的。

@SpringBootApplication的声明上有@ComponentScan,则@SpringBootApplication具有@ComponentScan的效果。

@SpringBootApplication的声明上有@ComponentScan,则@ComponentScan可称之为@SpringBootApplication元注解

自动装配

当Spring尝试实现自动装配时,会从Spring容器中查找合适的对象,关于“合适”的判定标准,首先,类型必须匹配,如果匹配类别的Bean有多个,必须保证名称匹配才可以正确装配。

关于名称匹配:被自动装配的属性名称,与Bean的名称相同。

关于Bean的名称:如果类名的第1个字母是大写的,且第2个字母是小写的,则Bean的名称是将类名首字母改为小写,例如BrandRepositoryImpl的Bean名称就是brandRepositoryImpl,否则,Bean名称就是类名。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值