基于Java的注解,是在类级别上定义beans,在方法级别上定义bean。和自动注解一样,可以减少xml的配置。
1. xml配置
在xml配置文件中添加自动扫描的配置:
<context:component-scan base-package="org.yousharp"/>
该配置不仅扫描构造型注解(@Controller, @Service, @Repository, @Component),也会扫描@Configuration注解。
2. 定义dao类和service类
dao类是service类的一个属性,是需要注入的对象。
dao类和service类就是两个很普通的java类,没有任何注解依附。
3. 定义一个配置类
单独定义一个配置类(在自动扫描包下),在类上使用@Configuration注解,在方法上使用@Bean注解:
@Configuration注解等价于xml配置中的beans
,该注解告诉Spring该类中包含一个或多个bean的定义;@Bean注解等价于xml配置中的bean
,将方法返回的对象定义为bean,方法名为bean的id;上面第一个bean的定义等价于xml配置:
<bean id="saveInfoDao" class="org.yousharp.AppConfig"/>
第二个bean的定义通过构造函数实现依赖注入,其含义等价于xml配置:
<bean id="videoService" class="org.yousharp.AppConfig">
<constructor-arg name="videoService" ref="saveVideoInfoDao">
</bean>
这里是通过构造函数实现注入,当然也可以通过setter方法实现注入。在VideoInfoService中去掉带参数的构造函数,同时对属性saveVideoInfoDao添加setter方法,修改AppConfig类中的第二个bean为:
4. Controller中引用
Controller里和使用xml配置bean和自动注解一样,通过bean的id获取对bean的引用。这里VideoService的bean的id为videoService。
参考资料