①声明bean的注解
@Component 将当前类声明为IOC容器中的一个普通的组件(除了下面三种外的组件)
@Controller 将当前类声明为IOC容器中的一个控制器组件
@Service 将当前类声明为IOC容器中的业务逻辑层组件
@Repository 将当前类声明为IOC容器中的一个持久化层组件
Spring根据上述注解其实并不能分辨当前类是否真的是一个控制器或Dao,即使标记的类和注解不对应也没有语法错误。
但在实际工作中,肯定要将专门的注解标记在对应的类上面。
②使用基于注解的bean的配置,需要额外导入一个jar包:spring-aop-4.0.0.RELEASE.jar (spring中所有注解都是基于aop的,使用时要导入spring-aop-4.0.0.RELEASE.jar包)
③需要设置自动扫描的包
< context:component-scan base-package ="com.neuedu.ioc.bean"/>
④使用注解后,默认按照类名首字母小写作为id的值,也可以使用value属性指定id,value属性名也可以省略注解
注解 id值
@Component commonComponent
public class CommonComponent {
}
@Controller(value="neueduBookAction" ) neueduBookAction
public class BookAction {
}
@Service("happyService" ) happyService
public class BookService {
}
⑤使用注解进行自动装配:@Autowired注解[好处就是:连get、set方法都不用写!]
@Autowired private UserDao dao; //@Autowired直接将IOC容器中的UserDao对象注入
[1]首先检测标记了@Autowired注解的属性的类型(开始根据类型注入,能确定唯一bean对象,则注入)
[2]根据类型进行装配
[3]如果指定类型的bean不止一个,那么根据需要被装配的属性的属性名做id的值,查找bean
(此时根据属性名注入,看是否有匹配id)
[4]如果根据id值还是没有找到bean,可以使用@Qualifier注解手动指定要装配的bean的id.