1.注解的使用
1.1 Configuration注解
该类等价 与XML中配置beans,相当于Ioc容器,它的某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean,与xml中配置的bean意思一样。
@Configuration注解的类必需使用<context:component-scanbase-package="XXX"/>扫描
定义一个MainConfig,用@Configuration注解,那MainConfig相当于xml里的beans,里面用@Bean注解的和xml里定义的bean等价,用<context:component-scanbase-package=”XXX”/>扫描该类,最终我们可以在程序里用@AutoWired或@Resource注解取得用@Bean注解的bean,和用xml先配置bean然后在程序里自动注入一样。目的是减少xml里配置。
1.2 Value注解
为了简化从properties里取配置,可以使用@Value, 可以properties文件中的配置值。
在xxxxxx-servlet.xml里引入properties文件。
在程序里使用@Value:
@Value("${wx_appid}")
1.3 Controller、Service、Repository、Component注解
目前4种注解意思是一样,并没有什么区别,区别只是名字不同。
使用<context:component-scanbase-package="XXX"/>扫描被注解的类,然后在类上写入注解
实现初始化和bean之前进行的操作,只能有一个方法可以用此注释进行注释,方法不能有参数,返回值必需是void,方法需要是非静态的。
1.4 Primary
自动装配时当出现多个Bean候选者,被注解为@Primary的Bean作为首选者,否则将抛出异常。
1.5 Autowired
Autowired默认先按byType,如果发现找到多个bean,则,又按照byName方式比对,如果还有多个,则报出异常。可以手动指定按byName方式注入,使用@Qualifier。
1.6 Resource
默认按 byName自动注入,如果找不到再按byType找bean,如果还是找不到则抛异常,无论按byName还是byType如果找到多个,则抛异常。
可以手动指定bean,它有2个属性分别是name和type,使用name属性,则使用byName的自动注入,而使用type属性时则使用byType自动注入。
2.依赖注入
参考笔记一中的DI
3.无配置注解
从 Spring 2.5 开始就可以使用注解来配置依赖注入。使用注解的方式使我们无需在XML中配置一个Bean引用,更加简单和方便。
注解配置默认情况下在Spring中是关闭的,我们需要在配置文件中使用<context:annotation-config/>
激活它。
一旦激活注解配置后,我们就可以在代码中使用注解来进行依赖注入。其中下面是几个重要的注解:
@Required注解应用于bean属性的setter方法
@Autowired注解可以应用到bean属性的setter方法,非setter方法,构造函数和属性
@Qualifier,通过指定确切的将被引用的bean,@Autowired和@Qualifier注解可以用来删除混乱
JSR-250 Annotations,Spring支持JSR-250的基础的注解,其中包括了@Resource,@PostContruct和@PreDestory注解