Spring 的配置文件简化与注解的使用

Spring 的配置文件简化与注解的使用


简化配置文件的配置

简化属性配置

1.简化set方法
  • 以后可以不用写set方法也能照常注入.
  • 对象的注入简化 
    autowire="byName"
    1.找到当前对象的武安不 set方法 ---setDog(),
    2.将方法进行变形 将 set去掉并且首字母小写dog名称
    3.根据dog查找所有的bean中的 id,如果 id一致则能实现正常注入
    4.如果根据 id匹配,没有匹配成功,则不能注入,为 null,这样的写法是有风险的.
    autowirte= "byType"
    1.找到当前对象的全部 set方法 ---setDog(),
    2.找到参数的类型Dog.class
    3.根据 class类型匹配bean标签中的 class,如果 class一致则匹配成功,如果 class类型不一致,则注入失败.结果为 null;
2.自动装配
  • 自动装配:如果新建的对象中需要注入引用类型,则可以使用autowire实现自动的装配,能够为引入类型自动的赋值无需在写property
  • 需要依赖set方法
  • 重要性:只有了解装配过程,才能真正了解注解的注入原理.
  • 注入说明:使用自动装配,只能注入引用类型,基本类型和集合使用原有方法
3.指定id进行注入:

1.@Autowired 

Qualifier(value=”idName”)//表示强制指定ID进行注入 2个注解必须一起使用,否则报错

2.@Resource 
说明: 功能上和@Autowired

说明:

  1. 如果是单个项目使用任意一个都可以
  2. 如果是多个项目,则使用@Autowired

类的注解

需求:由于大型项目中需要使用的bean很多,如果将这些bean写入配置文件中,会导致整个配置文件被别的混乱
思路:需要采用一种方式,告诉spring容器需要创建对象
办法:
1.开启包扫描:
base- package= "pojo" 指定的包路径
如果包的个数较多,使用 ","分割
只要给定了相对应的包路径,就会扫描给定包的全部子孙包
只要开启包扫描,默认开启属性注解

ID生成策略:

默认规则:
如果使用注解的方式创建对象,会根据我的类名自动的生成bean的 id,并且 id为类名首字母小写.
案例:
类名ID名
NBANBA
NbAnbA
nBAnBA

规则: 
ID的生成策略其实根据第二个字母决定,第二个字母如果大写,则保持类名不变,如果第二个字母小写,首字母才会小写. 
扩展:

  • BeanNameAware回显bean的Id,通过输出重写方法的属性

注解的使用原理

1.容器启动时,首先会 spring的配置文件
2.根据包扫描指定的包路径 spring会扫描当前包下的全部子孙包
3.在扫描时如果发现类上还有@Component注解,则会根据 spring的规则为其创建对象.将对象创建通过反射创建完成后,存入 spring所维护的map中,key就是类名首字母小写.value就是生成的对象.
4.如果需要进行对象注入
- 则在创建对象之后,自动的根据注解的匹配规则为其注入正确的对象,如果对象真确注入.则 spring返回正确的对象.
- 如果注入有误, spring则会发出报错信息.容器启动失败.

spring创建对象经历的生命周期(简版)

1.对象创建
2.初始化方法init
3.通过对象完成实际操作
4.对象销毁
配置文件方式
init负责对象的初始方法
destroy负责对象的销毁方法
注解方式
@PostConstruct //构造方法之后执行
@PreDestroy //容器销毁之前

同类型注解

Scope(value=”protpType”)//对象的单利和多例  
Lazy(true) //类的懒加载Component //表是当前类交给spring容器管理Controller //控制层 注解  
Service //业务层注解  
Repository //持久层的主机  
功能上和@Component没有任何差别,为了让程序员编程更加的明确,定义的.

案例: 
- 问题: 如果一个接口有多个实现类,则在进行注入的时候会出现找不到那个实现类的异常

总结:

  • 一个框架最好有一个接口
  • 扩展:灵活的使用id赋值的方式进行定义 
    • 人为指定bean的id之后通过@AutoWried适应灵活赋值

Spring注解形式实现MVC格式

  • servlet需要使用方法的时候通过接口进行调用.
  • 通过注解的引入来控制接口与实现之间的关系.

Spring和面向借口编程的好处

  • String中的IOC和DI一起联用,在面向借口编程中,可以将耦合性降到最低(现阶段)

为属性赋值

为基本类型赋值

1.为基本类型赋值 
2.为基本类型动态赋值

  • 引入外部的配置文件
  • 获取值得时候使用EL表达式
为集合赋值
  1. 引入头标签
  2. 在Spring配置文件中定义集合
  3. 引入属性:同样模仿EL表达式进行赋值

拓展

java不会我维护形参的参数只会维护实参的参数.

再次了解约束的配置

javase与javajdk1.8 的区别

在对象之间的强转

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值