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.class3.根据 class类型匹配bean标签中的 class,如果 class一致则匹配成功,如果 class类型不一致,则注入失败.结果为 null;
2.自动装配
- 自动装配:如果新建的对象中需要注入引用类型,则可以使用autowire实现自动的装配,能够为引入类型自动的赋值无需在写property
- 需要依赖set方法
- 重要性:只有了解装配过程,才能真正了解注解的注入原理.
- 注入说明:使用自动装配,只能注入引用类型,基本类型和集合使用原有方法
3.指定id进行注入:
1.@Autowired
2.@Resource
说明: 功能上和@Autowired
说明:
- 如果是单个项目使用任意一个都可以
- 如果是多个项目,则使用@Autowired
类的注解
需求:由于大型项目中需要使用的bean很多,如果将这些bean写入配置文件中,会导致整个配置文件被别的混乱
思路:需要采用一种方式,告诉spring容器需要创建对象
办法:
1.开启包扫描:
base-
package=
"pojo" 指定的包路径
如果包的个数较多,使用
","分割
只要给定了相对应的包路径,就会扫描给定包的全部子孙包
只要开启包扫描,默认开启属性注解
ID生成策略:
默认规则:
如果使用注解的方式创建对象,会根据我的类名自动的生成bean的
id,并且
id为类名首字母小写.
案例:
类名 | ID名 |
---|---|
NBA | NBA |
NbA | nbA |
nBA | nBA |
规则:
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表达式
为集合赋值
- 引入头标签
- 在Spring配置文件中定义集合
- 引入属性:同样模仿EL表达式进行赋值