将对象交由Spring管理
侧边栏壁纸
  • 累计撰写 61 篇文章
  • 累计收到 18 条评论

将对象交由Spring管理

龙流
2022-08-10 / 0 评论 / 178 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2022年09月02日,已超过573天没有更新,若内容或图片失效,请留言反馈。

Spring框架的两大主要功能:IOC容器、AOP面向切面编程。

在spring里采用注解方式@Service、@Component这些,实际上管理的是类,把这些类交给spring来负责实例化。
把对象交给spring管理,举个例子:最常见的在配置文件里定义一个bean,或者JavaConfig的方式就是在@Configure标签 标注的类里的 @Bean对象。这些Bean已经new出来了。这些对象往往是与业务无关的基础组件。比如datasource的bean、redis连接池的bean。个数是有限的。

方法一:XML配置bean

经典配置场景就是在xml配置文件中配置数据库和数据库连接池配置

<bean ...>

</beam>

方法二:Spring Boot中常用@Bean注解

本质和XML配置方法相同。所有用XML配置文件的方法都可以用这个方法改写。
@Bean 作业在方法上 //此处返回的是一个Spring的配置Bean,与xml的等价

方法三:BeanFacoty registerSingleton

这时候大家是否会有个疑问,XML配置Bean是传统的spring mvc里常用的将对象交给spring来管理的方法,@Bean是spring boot里将对象交给spring来管理的方法。那为什么还要有这个先实现BeanFactoryPostProcessor的方法呢?

因为这种方法可以用来做这件事情,但是不仅仅可以做这件事情。它神通广大,不仅可以将一个对象交给spring管理,还可以将已经交给spring管理的对象拿出来进行修改,还有其他各种的spring初始化的干预都可以做。所以用它来仅仅注册一个Bean有点杀鸡用牛刀的味道。

详细文档参考如下

关于@Component与@Controller、@Service、Repository

后三个注解他们的作用和属性与Component是一模一样,负责把类交给spring,让spring来负责实例化
@Controller:一般用在表现层
@Service:一般用在业务层
@Repository:一般用在持久层

属性value的值,用于指定bean的id。当我们不写时,它的默认值是当前类名,且首字母为小写

用于注入的注解
@Autowired:
作用:自动按照类型注入。只要容器中有唯一的一个bean对象类型和要注入的变量类型匹配,就可以注入成功

@Qualifier:
作用:在按照类型注入的基础之上再按照名称注入。它在给类成员注入时不能单独使用。但是在给方法参数注入时可以(为什么?)

@Resource:
作用:直接按照bean的id注入。它可以独立使用

用于改变作用范围的
@Scope:
作用:用于指定bean的作用范围
属性value:指定范围的取值。常用取值:singleton prototype

在Spring框架中遇到的错误记录
0

评论 (0)

取消