前面讲的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管理注解实现】的更多相关文章

  1. IoC容器-Bean管理注解方式(创建对象)

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

  2. Spring之Bean管理------注解方式

    编写测试类 1,编写相关的类 public interface UserDao { public void sayHello(); } public class UserDaoImpl impleme ...

  3. IoC容器-Bean管理注解方式(完全注解开发)

    完全注解开发 (1)创建配置类,替代xml配置文件 (2)编写测试类 在实际中一般用springboot做

  4. IoC容器-Bean管理注解方式(注入属性@Autowired和Qualifier)

    基于注解方式实现属性注入 (1)@Autowired:根据属性类型进行自动装配 第一步 把 service 和 dao 对象创建,在service 和 dao 类添加创建对象注解 第二步 在servi ...

  5. Bean管理注解的例子

  6. IoC容器-Bean管理注解方式(组件扫描配置)

    4,开启组件扫描细节配置

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

    注解:代码中的特殊标记,注解可以使用在类.方法.属性上面,使用注解可实现一些基本的功能.注解的写法是@注解名称(属性=属性值). 使用注解创建对象 第一步,创建Web项目,引入Spring的开发包 第 ...

  8. Spring_day02--课程安排_Spring的bean管理(注解)(注解创建对象/注入属性、配置文件和注解混合使用)

    Spring_day02 上节内容回顾 今天内容介绍 Spring的bean管理(注解) 注解介绍 Spring注解开发准备 注解创建对象 注解注入属性 配置文件和注解混合使用 AOP概念 AOP原理 ...

  9. Spring中Bean管理的常用注解

    在Spring中,主要用于管理bean的注解分为四大类:1.用于创建对象.2.用于给对象的属性注入值.3.用于改变作用的范围.4.用于定义生命周期.这几个在开发中经常接触到,也可以说每天都会遇见.其中 ...

随机推荐

  1. Vue学习笔记(三)组件间如何通信传递参数

    一:父组件向子组件传递参数 <template > <div id="app"> <h1 v-text="title">&l ...

  2. Outlook2016中如何实现自动密送

    Outlook2016中如何实现自动密送 下面的方案您可以参考一下: 1)在Outlook里面键入Alt+F11打开VBA编辑器: 2)激活左边的工程面板,展开并双击上面的“Project (VbaP ...

  3. c# 子窗体居中父窗体

    1.设置CenterParent不管用.只好用代码控制. frmRunning_ = new FrmRunning(); frmRunning_.StartPosition = FormStartPo ...

  4. 如何快速在Github找到你想要的东西

    众所周知 Github是全球最大的xx交友平台,虽然被收购了.但是不并没有什么影响. 使用Git可以做很多事,在这里不再缀述,上面的资源也是多种多样,应有尽有 对于这样一个平台,我们想快速找到自己需要 ...

  5. CRLF——http response 拆分攻击(webgoat)

    0x01 什么是CRLF CRLF是“回车+换行”(\r和\n)/(%0d和%0a)的简称. CRLF利用: 正常输入的请求中加入恶意代码,控制HTTP响应header中的字符(Location,Se ...

  6. MongoDB安装与配置问题

    MongoDB相关 通常我们在不同情境下使用不同的数据存储方式.如果仅仅用来存储测试用的数据,推荐使用TXT CSV格式的文件,因为这两种格式的读写都非常方便, 可以很快的打开文件查看当TXT CSV ...

  7. Vue CLI 3 如何自定义 js 的文件名

    参考链接:https://blog.csdn.net/weixin_33979363/article/details/88742342

  8. SpringBoot整合Redis及Redis工具类

    前言 想做一个秒杀项目,问了几个大佬要了项目视频,结果,自己本地实践的时候,发现不太一样,所以写下这篇,为以后做准备. 环境配置 IDE:IDEA 环境:Windows 数据库:Redis Maven ...

  9. POJ 1840:Eqs

    Description Consider equations having the following form: a1x13+ a2x23+ a3x33+ a4x43+ a5x53= The coe ...

  10. oracle常用命令(1)

    oracle常用命令 一.登录 1.管理员身份登录:sqlplus/nolog--->conn/as sysdba 2.普通用户登录:sqlplus/nolog---->conn 用户名/ ...