type
status
date
slug
summary
tags
category
icon
password
URL
文章来源说明
IOC注解应用
在bean上添加注解,可以快速的将bean注册到ioc容器。
如果想要将自定义的bean对象添加到IOC容器中,需要在类上添加某些注解
Spring中包含4个主要的组件添加注解:
@Controller:控制器,推荐给controller层添加此注解
@Service:业务逻辑,推荐给业务逻辑层添加此注解
@Repository:仓库管理,推荐给数据访问层添加此注解
@Component:给不属于以上基层的组件添加此注解
注意:我们虽然人为的给不同的层添加不同的注解,但是在spring看来,可以在任意层添加任意注解
spring底层是不会给具体的层次验证注解,这样写的目的只是为了提高可读性,最偷懒的方式
就是给所有想交由IOC容器管理的bean对象添加component注解
使用注解需要如下步骤:
1、添加上述四个注解中的任意一个
2、添加自动扫描注解的组件,此操作需要依赖context命名空间
3、添加自动扫描的标签context:component-scan
定义扫描包时需要包含的类和不要包含的类
当定义好基础扫描的包之后,可以排除包中的某些类,使用如下的方式:
type:表示指定过滤的规则
annotation:按照注解进行排除,标注了指定注解的组件不要,expression表示要过滤的注解
assignable:指定排除某个具体的类,按照类排除,expression表示不注册的具体类名
aspectj:后面讲aop的时候说明要使用的aspectj表达式,不用
custom:定义一个typeFilter,自己写代码决定哪些类被过滤掉,不用
regex:使用正则表达式过滤,不用
<!--指定只扫描哪些组件,默认情况下是全部扫描的,所以此时要配置的话需要在component-scan标签中添加 use-default-filters="false"-->
使用@AutoWired自动注入
注意:当使用AutoWired注解的时候,自动装配的时候是根据类型实现的
- 如果只找到一个,则直接进行赋值
- 如果没有找到,则直接抛出异常
- 如果找到多个,那么会按照变量名作为id继续匹配
- 匹配上直接进行装配
- 如果匹配不上则直接报异常
- 还可以使用@Qualifier注解来指定id的名称,让spring不要使用变量名,
- @AutoWired注解的源码的时候发现,此注解不仅可以使用在成员变量上,也可以使用在方法上。
自动装配的注解@AutoWired,@Resource
在使用自动装配的时候,出了可以使用@AutoWired注解之外,还可以使用@Resource注解
- @AutoWired:是spring中提供的注解,@Resource:是jdk中定义的注解,依靠的是java的标准
- @AutoWired默认是按照类型进行装配,默认情况下要求依赖的对象必须存在,@Resource默认是按照名字进行匹配的,同时可以指定name属性
- @AutoWired只适合spring框架,而@Resource扩展性更好
致谢:
有关Notion安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~
- 作者:卷神
- 链接:https://blog.952712.xyz/article/0e7c6f55-b685-4077-9579-cf29081f6d2b
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。







