spring框架基于注释的传值

前言

这是我在看动力节点里王鹤老师的视频时做的一点笔记,可能有些没记住,记错了的情况,请大家海涵.
因为是笔记,所以可能会有人和我一样的笔记,届时可通知我删除,我怂.

基于注解的依赖

通过注解完成java对象的创建 属性赋值

使用注解步骤

1. 加入maven依赖spring-context, 加入此依赖同时,间接加入spring-aop依赖,使用注解必须加入aop依赖
2. 类中加入spring的注解 (多个不同功能的注解)
3. 在spring的配置文件中,加入一个组件扫描器的标签,说明注解在你项目中的位置.

要学习的注解

@component

- 用于创建对象
- 属性 : value 就是对象的名称,也就是 <bean> 的id值,value的值是唯一的.
- @Component(value = "唯一值")  只会创建这一个对象
- @Component(唯一值) 省略value
- @Component() 使用spring的默认名称(类名首字母小写)

@Respotory

用于持久层创建对象,放在dao的实现类上面,表示创建dao对象,dao对象是可以访问数据库的

@Service

用于业务层创建对象,放在service实现类上,创建service对象,service对象是做业务处理的,可以有事务等功能的.

@Controller

用于控制器的上面创建对象,放在控制器,处理器类的上面,创建控制器对象的,控制器对象是能够接收用户提交的参数,显示处理的结果,

上面三个注解用法和Componeng一致,都能创建对象,但是这三个注解还有其他额外功能.(可以给项目对象分层)

@Value 简单类型的赋值

- 属性 :value是String类型的,表示简单类型的属性值
- 位置: 
    1. 在属性定义之上,无需定义set方法
    2. 在set方法之上
- 使用方法
    1. @Value(value="张飞")
    2. @Value("张飞") 省略value  
    3. @Value("29")  
    - 如果接收值是一个int  也要写在双引号中.

@Autowrite 引用类型赋值

  • spring使用自动注入原理(byType(默认使用),byName),对引用值赋值.
  • spring 默认使用byType 注入
  • 属性 : required :
    • 默认为true,表示引用类型赋值失败,程序报错,并终止运行
    • required=false 表示引用类型赋值失败,程序正常运行,引用类型赋值为null
  • 方式:
    1. byType方式
      1. 在属性定义之上,无需set方法,推荐使用
        直接 @Autowrite 就可
      2. 在set方法之上
    2. byName方式
      1. 使用@Autowrite
      2. 使用@Qualifire(“id值”)
        前两步没有先后顺序
        此时就自动注入成功

@Resource

- 来自jdk中的注解,spring对其提供支持,可以使用它对引用类型赋值
- 使用的也是自动注入原理,支持byName,ByType
- 默认byName,如果byName不行,则使用byType
- 设置只使用byName方法   @Resource(name="id值")

组件扫描器

声明组件扫描器 component-scan ,组件就是java对象
base-package :指定注解在你项目中的包名.

    <context:component-scan base-package="包全限定名"/>
工作方式
    spring会扫描遍历base-package指定的包,把包中,子包中所有的类,找到类中注解,按照注解的功能创建对象,或给对象赋值.

三种导入多个包的组件扫描器

  1. 使用逗号 ’ , ’ ,分号 ’ ; ’ 进行分隔
    <context:component-scan base-package="包1, 包2"/>
  2. 多个组件扫描器
<context:component-scan base-package="包1"/>
<context:component-scan base-package="包2"/>
  1. 一个组件扫描器中只有一个父包,父包中有子包
    <context:component-scan base-package="父包"/>

spring会扫描遍历base-package指定的包,此包中,子包中所有的类都会被扫描到.

什么时候使用xml,什么时候使用注释

  • xml文件: java代码与值分离彻底 值就是值,代码就是代码.经常改就用xml文件
  • 注释: 值还是在java代码在一起的,分离不彻底,但比较快捷,不经常改就用注释.

使用${} 进行占位

  1. 在xxx.properties文件中指定数据 key=value
  2. 然后在主配置文件中导入这个包
    <context:property-placeholder location="classpath:xxx.properties" />
  3. 然后在文件中使用#{key} 代替值

ioc 解耦合 :

实现业务对象之间的解耦合,例如 service 和dao对象之间的解耦合

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值