前面讲的Bean相关配置全部是使用xml配置文件或实现接口来实现的,接下来将比较常用的用法,使用注解实现bean的注入和管理

内容包括

ClassPath扫描与组件管理

类的自动检测与注册bean

context:annotation-config

@Component、@Repository、@Service、@Controller

@AutoWired、@Required

@Qualifier

@Configuration、@Bean

@ImportResource("")、@Value

@Resource

ClassPath扫描与组件管理

从spring3.0开始可以使用java注解来定义bean,而非xml,如@Configuration、@Bean、@Import、@DependsOn

@Conponent是一个通用注解,可用于任何Bean

@Repository DAO层(持久层)注解

@Service Service层(服务层)注解

@Controller MVC控制层注解

注册在类上的注解,可以被spring自动检测并注册到ApplicationContext中,注册在成员变量或方法上的注解可以被自动装载

类的自动检测

1、以下语句需要在springxml中配置,即可使用注解

context:annotation-config

context:component-scan(一般配置此配置,配置检测路径,会包含annotation-config)

2、使用过滤器进行自定义扫描

默认情况下,类被自动发信并注册bean的条件是:使用@Component、@Repository、@Service、@Controller注解或使用@Component注解的自定义注解

可使用过滤器修改扫描规则,如用某字符替换某注解,context:include-filter、context:exclude-filter、ues-default-filter(禁用自动发现与注册)

filter类型(type)

annotation 注解

assignable 类

aspectj

regex 正则表达式

custom

Demo

1、修改xml文件

2、在需要注册的类上做注解(这里注解只能自动注册类,省去了xml配置,但不能自动装载,还是需要通过ApplicationContext获取)

service中的dao类,因为有构造,可以自动装载,若无构造,需使用autowired

3、测试运行

@AutoWired、@Required——自动装载bean

AutoWired可以注解成员变量,使其自动装载(不用使用构造)

当装载List时,会装载所有List泛型类型的类,若想使其有序,可使用@Order注解所有泛型类型的实现类,用1,2,3标记

若注解必须找到实现类,则可使用@Autowired(required = true) 或@Required(set方法注解)

@Qualifier——缩小范围

定义扫描的实现类名称,即使有其他实现类,也可以只装配该类

Qualifier——适用于成员变量,构造,多参方法

Resource——适用于成员变量,单参setter

@Bean基于Java的容器注解

使用在xml中配置bean标签的方式可以将类注册到ioc容器中;使用@Configuration注解+@Bean注解可以实现同样的效果

@ImportResource("")、@Value——资源引用

如jdbc的配置引入,可在Configuration文件上引入资源,然后对成员变量进行Value注解,读取资源文件中的key对于的值,再使用@Bean注册

如@ImportResource("classpath:/com/shane/spring/properties-config.xml")、@Value("${jdbc.url}")、@Value("${jdbc.username}")、@Value("${jdbc.password}")

@Resource、@PostConstruct、@PreDestory

@Resource使用与@Autowired差不多,有以下区别

1、@Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上。

2、@Autowired默认按类型装配(这个注解是属业spring的),默认情况下必须要求依赖对象必须存在,如果要允许null 值,可以设置它的required属性为false

3、@Resource(这个注解属于J2EE的),默认安照名称进行装配,名称可以通过name属性进行指定,

如果没有指定name属性,当注解写在字段上时,默认取字段名进行按照名称查找,如果注解写在setter方法上默认取属性名进行装配。 当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意的是,如果name属性一旦指定,就只会按照名称进行装配

@Inject——需要引入包,等效于Autowired,与@Named配合使用

java注解管理_JavaSpring【四、Bean管理注解实现】相关推荐

  1. 【Spring5】004-IOC容器+基于注解的方式实现Bean管理

    文章目录 1.什么是注解 2.Spring 针对 Bean 管理中创建对象提供的注解 3.基于注解方式实现对象创建 3.1.执行流程介绍 4.开启组件扫描配置的细节问题 5.基于注解方式实现属性注入 ...

  2. IOC操作Bean管理注解方式(创建对象)

    目录 IOC操作Bean管理注解方式(创建对象) 1.什么是注解 2.Spring 针对 Bean 管理中创建对象提供注解主要有以下四种 (1)@Component (2)@Service (3)@C ...

  3. 软考-信息系统项目管理师-项目沟通管理和干系人管理

    目录 10.1.沟通的基本概念 一.沟通的基本概念 1.沟通模型 2.沟通的方式 3.沟通渠道的选择: 10.2.规划沟通管理 1.制订沟通管理计划的输入 2.制定沟通管理计划的工具 3.制定沟通管理 ...

  4. 基于XML和注解的Spring Bean管理

    文章目录 Spring工厂接口 BeanFactory接口 ApplicationContext 接口 Spring的bean管理的两种方式: 3 种实例化bean的方式(xml) 通过构造方法创建b ...

  5. (转)Spring的bean管理(注解方式)

    http://blog.csdn.net/yerenyuan_pku/article/details/69663779 Spring的bean管理(注解方式) 注解:代码中的特殊标记,注解可以使用在类 ...

  6. IOC操作Bean管理注解方式(注入属性@Autowired和Qualifier)

    目录 IOC操作Bean管理注解方式(注入属性@Autowired.@Qualifier和@Resource) 1.基于注解方式实现 属性注入 (1)@Autowired:根据属性类型进行自动装配 第 ...

  7. spring IOC容器 Bean 管理——基于注解方式

    IOC 操作 Bean 管理(基于注解方式) 1.什么是注解 ​ (1)注解是代码特殊标记,格式:@注解名称(属性名称=属性值, 属性名称=属性值-) ​ (2)使用注解,注解作用在类上面,方法上面, ...

  8. IOC操作Bean管理注解方式(完全注解开发)

    IOC操作Bean管理注解方式(完全注解开发) (1)创建配置类,替代xml配置文件 需要让Spring 把一个普通的类认为是配置类 结构图: SpringConfig类代码如下: package c ...

  9. IOC操作Bean管理注解方式(组件扫描配置)

    IOC操作Bean管理注解方式(组件扫描配置) 开启组件扫描的 细节配置 约定那些类可以扫描,哪些类不可以扫描 bean1.xml配置如下: <?xml version="1.0&qu ...

最新文章

  1. 为什么做好数据安全这么难?黑客太牛?
  2. (原创)Linux下一定要4字节地址对齐操作
  3. Flex值得一看参考资源
  4. php获取表单后如何保存到数据库中,php – 如何将数据从HTML表单保存到WordPress中的数据库表?...
  5. 虚拟机的网络连接模式
  6. 用TortoiseGit时的实用git命令
  7. PyTorch学习—15.PyTorch中TensorBoard的使用
  8. 国内主机备案是干嘛的? 国内免备案主机是真的吗?
  9. flink 部署模式和运行时架构(会话模式、单作业模式、应用模式,JobManager、TaskManager,YARN 模式部署以及运行时架构)
  10. MPCS-314 1A 光电耦合器 用于IGBT/MOSFET隔离栅极驱动 完美代替ELS3150 亿光
  11. 【PTA~21年GPLT团体程序天梯赛-L1题】
  12. WIN10中文乱码修复合集
  13. Java基础——匿名内部类详解及举例
  14. Unity导出微信小游戏
  15. 天文数据批量下载笔记
  16. 我们不生产代码,我们是代码的搬运工
  17. Windows 环境下查看 Redis 版本号命令
  18. 转载:微信的智能心跳方案
  19. 测试工程师技术之外软技能提升指南
  20. 对Dell U2713H和U2414H显示器上的“No DisplayPort Cable”(无DisplayPort电缆)错误消息进行故障诊断

热门文章

  1. 一文弄懂EnumMap和EnumSet
  2. 关于CompletableFuture的一切,看这篇文章就够了
  3. python正则表达式模块_Python正则表达式模块(re模块)
  4. 03.full_text interval查询
  5. 03.body_search
  6. spark任务jvm内存溢出
  7. 【解题报告】Leecode 438. 找到字符串中所有字母异位词——Leecode每日一题系列
  8. 这代码她不美吗?——试题 基础练习 十六进制转八进制
  9. 算法竞赛入门经典(第二版) | 例题4-5 追踪电子表格中的单元格 (UVa512,Spreadsheet Tracking,World Finals)(解法二)
  10. netty java开发文档_《Netty官方文档》设置开发环境