注解方式可以简化spring的IOC容器的配置
使用注解步骤:
1)先引入context名称空间
xmlns:context="http://www.springframework.org/schema/context"
2)开启注解扫描
<context:component-scanbase-package="cn.itcast.e_anno2"></context:component-scan>
3)使用注解
通过注解的方式,把对象加入ioc容器。
注解在控制层,service,持久层有不同的component,除了写成component还可以分别使用
@Controller,@service,@Repository
@Controller // 控制层的组件
public class UserAction {
@Resource
private UserService userService1;
public String execute() {
userService1.save();
return null;
}
}
@Repository // 在持久层可以选择用这个注解
public class UserDao {
public UserDao(){
System.out.println("UserDao.UserDao()");
}
public UserDao(int id){
System.out.println("UserDao.UserDao(int id)" + id);
}
public void save() {
System.out.println("DB:保存用户!!!");
}
}
@Service // 表示业务逻辑层的组件
public class UserService {
// @Resource // 根据类型查找 【在容器中要确保该类型只有一个变量】
@Resource(name = "userDao") // 根据名称查找
private UserDao userDao; // 去容器中招UserDao类型的变量,找到后就赋值
public void save() {
userDao.save();
}
}
1.若仅仅是 @resource 后面不加参数,则为根据类型查找 【在容器中要确保该类型只有一个变量】。
2. 若为@Resource(name = "userDao") //则为 根据名称查找。因为名字可以不一样,所以在IOC容器中,也就是bean.xml中写多个相同的对象class,只要id不同。
创建对象以及处理对象依赖关系,相关的注解:
@Component 指定把一个对象加入IOC容器
@Repository 作用同@Component; 在持久层使用
@Service 作用同@Component; 在业务逻辑层使用
@Controller 作用同@Component; 在控制层使用
@Resource 属性注入
总结:
1) 使用注解,可以简化配置,且可以把对象加入IOC容器,及处理依赖关系(DI)2) 注解可以和XML配置一起使用。