基于注解的自动装配之@Autowired注解能够标识的位置
①场景模拟
- 参考基于xml的自动装配
- 在UserController中声明UserService对象
- 在UserServiceImpl中声明UserDao对象
②@Autowired注解
- 在成员变量上直接标记@Autowired注解即可完成自动装配,不需要提供setXxx()方法。以后我们在项目中的正式用法就是这样。
@Controller
public class UserController{
@Autowired
private UserService userService;
public void saveUser(){
userService.saveUser();
}
}
public interface UserService {
/**
* 保存用户信息
*/
void saveUser();
}
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
/**
* 保存用户信息
*/
public void saveUser() {
userDao.saveUser();
}
}
public interface UserDao {
/**
* 保存用户信息
*/
void saveUser();
}
@Repository
public class UserDaoImpl implements UserDao {
/**
* 保存用户信息
*/
public void saveUser() {
System.out.println("保存成功");
}
}
③@Autowired注解其他细节
-
@Autowired注解可以标记在构造器和set方法上
@Controller
public class UserController {
private UserService userService;
@Autowired
public UserController(UserService userService){
this.userService = userService;
}
public void saveUser(){
userService.saveUser();
}
}
@Controller
public class UserController {
private UserService userService;
@Autowired
public void setUserService(UserService userService){
this.userService = userService;
}
public void saveUser(){
userService.saveUser();
}
}