java注解管理_JavaSpring【四、Bean管理注解实现】
前面讲的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管理注解实现】相关推荐
- 【Spring5】004-IOC容器+基于注解的方式实现Bean管理
文章目录 1.什么是注解 2.Spring 针对 Bean 管理中创建对象提供的注解 3.基于注解方式实现对象创建 3.1.执行流程介绍 4.开启组件扫描配置的细节问题 5.基于注解方式实现属性注入 ...
- IOC操作Bean管理注解方式(创建对象)
目录 IOC操作Bean管理注解方式(创建对象) 1.什么是注解 2.Spring 针对 Bean 管理中创建对象提供注解主要有以下四种 (1)@Component (2)@Service (3)@C ...
- 软考-信息系统项目管理师-项目沟通管理和干系人管理
目录 10.1.沟通的基本概念 一.沟通的基本概念 1.沟通模型 2.沟通的方式 3.沟通渠道的选择: 10.2.规划沟通管理 1.制订沟通管理计划的输入 2.制定沟通管理计划的工具 3.制定沟通管理 ...
- 基于XML和注解的Spring Bean管理
文章目录 Spring工厂接口 BeanFactory接口 ApplicationContext 接口 Spring的bean管理的两种方式: 3 种实例化bean的方式(xml) 通过构造方法创建b ...
- (转)Spring的bean管理(注解方式)
http://blog.csdn.net/yerenyuan_pku/article/details/69663779 Spring的bean管理(注解方式) 注解:代码中的特殊标记,注解可以使用在类 ...
- IOC操作Bean管理注解方式(注入属性@Autowired和Qualifier)
目录 IOC操作Bean管理注解方式(注入属性@Autowired.@Qualifier和@Resource) 1.基于注解方式实现 属性注入 (1)@Autowired:根据属性类型进行自动装配 第 ...
- spring IOC容器 Bean 管理——基于注解方式
IOC 操作 Bean 管理(基于注解方式) 1.什么是注解 (1)注解是代码特殊标记,格式:@注解名称(属性名称=属性值, 属性名称=属性值-) (2)使用注解,注解作用在类上面,方法上面, ...
- IOC操作Bean管理注解方式(完全注解开发)
IOC操作Bean管理注解方式(完全注解开发) (1)创建配置类,替代xml配置文件 需要让Spring 把一个普通的类认为是配置类 结构图: SpringConfig类代码如下: package c ...
- IOC操作Bean管理注解方式(组件扫描配置)
IOC操作Bean管理注解方式(组件扫描配置) 开启组件扫描的 细节配置 约定那些类可以扫描,哪些类不可以扫描 bean1.xml配置如下: <?xml version="1.0&qu ...
最新文章
- 为什么做好数据安全这么难?黑客太牛?
- (原创)Linux下一定要4字节地址对齐操作
- Flex值得一看参考资源
- php获取表单后如何保存到数据库中,php – 如何将数据从HTML表单保存到WordPress中的数据库表?...
- 虚拟机的网络连接模式
- 用TortoiseGit时的实用git命令
- PyTorch学习—15.PyTorch中TensorBoard的使用
- 国内主机备案是干嘛的? 国内免备案主机是真的吗?
- flink 部署模式和运行时架构(会话模式、单作业模式、应用模式,JobManager、TaskManager,YARN 模式部署以及运行时架构)
- MPCS-314 1A 光电耦合器 用于IGBT/MOSFET隔离栅极驱动 完美代替ELS3150 亿光
- 【PTA~21年GPLT团体程序天梯赛-L1题】
- WIN10中文乱码修复合集
- Java基础——匿名内部类详解及举例
- Unity导出微信小游戏
- 天文数据批量下载笔记
- 我们不生产代码,我们是代码的搬运工
- Windows 环境下查看 Redis 版本号命令
- 转载:微信的智能心跳方案
- 测试工程师技术之外软技能提升指南
- 对Dell U2713H和U2414H显示器上的“No DisplayPort Cable”(无DisplayPort电缆)错误消息进行故障诊断
热门文章
- 一文弄懂EnumMap和EnumSet
- 关于CompletableFuture的一切,看这篇文章就够了
- python正则表达式模块_Python正则表达式模块(re模块)
- 03.full_text interval查询
- 03.body_search
- spark任务jvm内存溢出
- 【解题报告】Leecode 438. 找到字符串中所有字母异位词——Leecode每日一题系列
- 这代码她不美吗?——试题 基础练习 十六进制转八进制
- 算法竞赛入门经典(第二版) | 例题4-5 追踪电子表格中的单元格 (UVa512,Spreadsheet Tracking,World Finals)(解法二)
- netty java开发文档_《Netty官方文档》设置开发环境