spring前世今生

一、1.1版本
applicationcontext.xml中
1)bean标签
注入bean,然后就可get到bean

2)import标签(引入其他xml配置文件)

二、2.5版本
1)有了@required、@repository、@autowired、@quailfired、@compenont、@controller、@service
和mvc的@requestmapping
2)依旧不能脱离xml :context:componetscan...: 扫描路径
然后用@componet注解就可以get到bean

三、3.0版本
1).@configuration修饰的类就是spring的配置类,相当于applicationcontext.xml文件
2).@bean修饰方法:相当于配置文件中bean标签,将方法返回的对象注入到容器里面去
还不能完全脱离xml文件,要结合xml里配置componentscan扫描路径
3.1版本
1.
才出现@componentscan(basepackages=) (是替代<context:component-scan>标签),不设置basepackages=的话默认扫描当前包及其子包,这时才可以脱离配置文件

但是都配置在一个配置文件不太好,因为启动的时候只加载核心的一个配置类xxx.config

2.所以出现@import注解替代配置文件中的import标签
1).作用是导入第三方的配置类
@import(value={Mqconfig.class,...})

@configutration
class  Mqconfig{
@bean
public UerService getuserservice(){
return new userservice();
}
}

2).@import除了引入第三方配置类,还可以将普通的类型的对象注入到容器中,但是这样扩展性不足
@import(value={Userservice.class})
@configuration
class democonfig{
}
3).@import(MyImportselector.class)
注解中注入的类型

如果实现了ImportSelector接口 那么就不会将该类型注入到容器中,而是将selectorImports方法的返回结果注入到容器中,这样可以动态注入;

如果是实现了ImportBeanDefinitionRegistrar接口的registerBeanDefinitions方法
可以自己注册定义bean


3.@Enable注解
前提RedisConfig配置类注入template,但是没有生效,因为没有加载这个redisconfig

自定义注解 EnableRedisAutoConfiguration
redis模块使用的开关
上加@Import(Redisconfig.class)
就可以

实现加上@EnableRedisAutoConfiguration这个注解就放开redis使用
 疑问:注解的使用?为什么这样就可以?


四、4.0版本
@Conditional

疑问:跟@import区别为什么还用@import?
@EventListener
@Aliasfor
@Crossorigin

1.我们希望在特定的情况下注入该对象,在某些情况下不去注入该对象,@Conditional条件注解决定了该对象是否注入到容器中。

使用:

1).@Conditional(value={自定义类.class})
2).自定义类实现Condition的matches方法,这个方法如果返回true就注入,否则就不注入可以用在方法(@bean注释的)或者(要注入的)类上

需求1.如果当前系统中存在RedisOperation这个class就返回true否则返回false

需求2.如果spring容器中存在...,效果有点像springboot自动装配,如果引入redis的starter就注入,否则就不注入

五、5.0版本
@Indexed

提升检索效率
编译的时候就记录要加载的bean到文件
启动的时候根据文件一个一个反射然后注入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值