❝大家好呀,我是小羊,如果大家喜欢我的文章的话😁,就关注我一起学习进步吧~
❞
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 确保在所有的异常情况下都抛出异常

今天的分享就先到这里啦。
喜欢我的话,可以给我点个赞呀。





