❝
大家好呀,我是小羊,如果大家喜欢我的文章的话😁,就关注我一起学习进步吧~
❞
1.@bean
@Bean表示方法产生一个由Spring管理的bean,一般用在方法上,用于将方法的返回值对象放入容器。
-
当使用name属性可用时,用于确定bean名称的默认策略是使用方法的名称。但是如果需要显式命名,则可以在注解上使用 name 属性(或其别名{value})。
-
另请注意 name接受一个字符串数组,允许为单个bean使用多个名称(即主bean名称加上一个或多个别名)。
比如我们经常在数据库连接池配置 @bean 注解,用于生成数据源实例。
2.@Component
用于实例化对象,将对象注入IOC容器,一般作用在类上,它和 @bean 一样都是把实例放入 spring 容器中,而 @bean 一般作用在方法上,用方法的返回对象放入spring中,而@Component一般作用在 类上,生成该类的对象存入到 spring容器中。
它还有一些子注解:
-
@Controller -
@Service -
@Repository -
@configuration
这些注解的作用类似,被此注解标注的类会被Spring自动管理起来。为了代码更好的分层,spring 区分了这些注解。
3.@ComponentScan
@ComponentScan注解用于配置Spring需要扫描的被组件注解注释的类所在的包。
可以通过配置其basePackages属性或者value属性来配置需要扫描的包路径。value属性是basePackages的别名。如下图所示。
4. @value
简单属性的依赖注入,一般用于自定义一些配置,使用起来简单高效
5. @Autowired
对象属性的依赖注入,比如我们想要在项目中使用spring 容器中的某个bean,直接 使用 @Autowride 注解即可。简单便捷,
1.自动装配模式
如上图所示,有五种自动接线模式。让我们一一讨论。
-
No 此选项是 spring 框架的默认选项,这意味着自动装配是关闭的。您必须在 bean 定义中使用 标记显式设置依赖关系。 -
byName 此选项启用基于 bean 名称的依赖项注入。在 bean 中自动装配属性时,属性名称用于在配置文件中搜索匹配的 bean 定义。如果找到名字相同的的 bean,则将其注入到属性中。如果没有找到这样的 bean,则会引发错误。 -
byType 此选项启用基于 bean 类型的依赖项注入。在 bean 中自动装配属性时,属性的类类型用于在配置文件中搜索匹配的 bean 定义。如果找到这样的 bean,则将其注入到属性中。如果没有找到这样的 bean,则会引发错误。 -
constructor 通过构造函数自动装配类似于 byType,但适用于构造函数参数。在启用自动装配的 bean 中,它将查找构造函数参数的类类型,然后对所有构造函数参数执行自动装配类型。请注意,如果容器中没有一个构造函数参数类型的 bean,则会引发致命错误。
可以通过配置的方式来设置 bean 的 装配模式
<beans default-autowire="byType">
@Autowired 与 @Resource 的区别:
1. 提供方不同
@Autowired 是Spring提供的,@Resource 是J2EE提供的。
2. 装配时默认类型不同
@Autowired只按type装配,@Resource默认是按name装配。
3. 使用区别
(1)@Autowired与@Resource都可以用来装配bean,都可以写在字段或setter方法上
(2)@Autowired默认按类型装配,默认情况下必须要求依赖对象存在,如果要允许null值,可以设置它的required属性为false。如果想使用名称装配可以结合@Qualifier注解进行使用。
(3)@Resource,默认按照名称进行装配,名称可以通过name属性进行指定,如果没有指定name属性,当注解写在字段上时,默认取字段名进行名称查找。如果注解写在setter方法上默认取属性名进行装配。当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意的是,如果name属性一旦指定,就只会按照名称进行装配。
6. @Transactional
此注解可以标在类上,也可以表在方法上,表示当前类中的方法 具有事务管理功能。
有一点需要注意,一般来说,@Transactional 默认作用的异常场景是 RuntimeException,是我平时使用的时候加上 rollbackFor = Exception.class 确保在所有的异常情况下都抛出异常
今天的分享就先到这里啦。
喜欢我的话,可以给我点个赞呀。
原文始发于微信公众号(小羊架构):spring 源码阅读(4)spring 常用注解
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/259823.html