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配合使用
JavaSpring【四、Bean管理注解实现】的更多相关文章
- IoC容器-Bean管理注解方式(创建对象)
IoC操作Bean管理(基于注解方式) 1,什么是注解 (1)注解是代码特殊标记,格式:@注解名称(属性名称=属性值,属性名称=属性值...) (2)使用注解,注解作用在类上面,方法上面,属性上面 ( ...
- Spring之Bean管理------注解方式
编写测试类 1,编写相关的类 public interface UserDao { public void sayHello(); } public class UserDaoImpl impleme ...
- IoC容器-Bean管理注解方式(完全注解开发)
完全注解开发 (1)创建配置类,替代xml配置文件 (2)编写测试类 在实际中一般用springboot做
- IoC容器-Bean管理注解方式(注入属性@Autowired和Qualifier)
基于注解方式实现属性注入 (1)@Autowired:根据属性类型进行自动装配 第一步 把 service 和 dao 对象创建,在service 和 dao 类添加创建对象注解 第二步 在servi ...
- Bean管理注解的例子
- IoC容器-Bean管理注解方式(组件扫描配置)
4,开启组件扫描细节配置
- Spring的bean管理(注解方式)
注解:代码中的特殊标记,注解可以使用在类.方法.属性上面,使用注解可实现一些基本的功能.注解的写法是@注解名称(属性=属性值). 使用注解创建对象 第一步,创建Web项目,引入Spring的开发包 第 ...
- Spring_day02--课程安排_Spring的bean管理(注解)(注解创建对象/注入属性、配置文件和注解混合使用)
Spring_day02 上节内容回顾 今天内容介绍 Spring的bean管理(注解) 注解介绍 Spring注解开发准备 注解创建对象 注解注入属性 配置文件和注解混合使用 AOP概念 AOP原理 ...
- Spring中Bean管理的常用注解
在Spring中,主要用于管理bean的注解分为四大类:1.用于创建对象.2.用于给对象的属性注入值.3.用于改变作用的范围.4.用于定义生命周期.这几个在开发中经常接触到,也可以说每天都会遇见.其中 ...
随机推荐
- Spring Boot确保Web应用安全(登陆认证)
Spring Boot官方提供了一个登陆认证的清晰易懂的 例子 , 我们在次以此例展开演示Spring Boot是如何实现登陆认证的. 首先我们去 https://start.spring.io/ 下 ...
- 我是如何提高工作效率的-工具篇(一)-Clover
痛点: 还在为资源管理器窗口切来切去烦恼吗? 效果图: 实现工具:Clover 放个链接 链接:https://pan.baidu.com/s/1UiUQZtE99fMNDe1f2gOnlg 提取 ...
- Ultimate Guide to Line For Business (May 2019)
Ultimate Guide to Line For Business (May 2019) By Iaroslav Kudritskiy February 4, 2019 No Comments I ...
- 如何使用 python 接入虹软 ArcFace SDK
公司需要在项目中使用人脸识别SDK,并且对信息安全的要求非常高,在详细了解市场上几个主流人脸识别SDK后,综合来看虹软的Arcface SDK比较符合我们的需求,它提供了免费版本,并且可以在离线环境下 ...
- 2019年9月Leetcode每日训练日志
2019-09-16 #1171 从链表中删去总和值为零的连续节点 #1170 比较字符串最小字母出现频次 #1169 查询无效交易 #226 翻转二叉树 2019-09-15 #1190 反转每对括 ...
- 10.Windows远程管理工具RAT----Metasploit基础----Metasploit模块----fsociety工具包
Windows远程管理工具RAT QuasarRAT github.com/quasar/QuasarRAT 命令环境 MINGW64 (GCC编译器) mkdir RAT cd RAT git cl ...
- manjar 搭建aria2c下载器
从添加或删除软件管理程序里安装 aria2. 在一个地方创建一个文本文件,名为 「aria2.conf」 : rpc-user=我是用户名 rpc-passwd=我是密码 enable-rpc=tru ...
- JAVA连接Sql-Server教程
一.下载相应的版本的jar文件(官网:https://docs.microsoft.com/zh-cn/sql/connect/jdbc/system-requirements-for-the-jdb ...
- C# DataTable映射成Entity
using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations.Schema; ...
- java源码--HashMap
一.HashMap简介 1.1.HashMap概述 HashMap是基于哈希表的Map接口实现的,它存储的是内容是键值对<key,value>映射.此类不保证映射的顺序,假定哈希函数将元素 ...