〖注解〗使用注解配置Bean
在类上使用注解,标识该类是一个组件
@Repository / 用于标识Dao组件
@Service / 用于标识Service组件
@Controller / 用于标识Action组件
@Component / 用于标识其他的通用组件,通常用于标识实体类
【默认的id为类的首字母小写】
例如:
/ Dao组件
@Repository
public interface UserDao {
}
/ Service组件
@Service
public interface UserService {
}
/ Action组件
@Controller
public class LoginAction {
}
/ 实体类组件
@Component
public class User {
}
在类上使用注解,标识该对象的创建方式
@Scope("singleton") / 单例模式创建对象(例如: Dao)
※Spring框架默认使用单例模式,所以一般不使用此注解
@Scope("prototype") / 原型模式创建对象,即非单例模式(例如: Action)
例如:
/ 非单例模式创建对象
@Scope("prototype")
public class User {
}
在属性/setter方法/构造器上使用注解,标识依赖的组件
@Resource / Spring会自动匹配类型并注入
※如果找不到匹配的类型会报错,如果找到的匹配类型多余一个也会报错
或
@Resource(name = "xxx") / 将名称为xxx的Bean注入
----------------------------------------------------------------------------------------
(已经不推荐使用)
@Autowired / Spring会自动匹配类型并注入
※如果找不到匹配的类型会报错,如果找到的匹配类型多余一个也会报错
或
@Autowired
@Qualifier("xxx") / 将名称为xxx的Bean注入
例如:
1.在属性上使用注解
@Controller
public class UpdateUserAction {
@Resource(name = "jdbcUserDaoImpl")
private UserDao userDao;
public String execute() {
userDao.update();
return "SUCCESS";
}
}
或
@Controller
public class UpdateUserAction {
@Autowired
@Qualifier("jdbcUserDaoImpl")
private UserDao userDao;
public String execute() {
userDao.update();
return "SUCCESS";
}
}
2.在setter方法上使用注解
@Controller
public class UpdateUserAction {
private UserDao userDao;
@Resource(name = "jdbcUserDaoImpl")
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
public String execute() {
userDao.update();
return "SUCCESS";
}
}
或
@Controller
public class UpdateUserAction {
private UserDao userDao;
@Autowired
@Qualifier("jdbcUserDaoImpl")
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
public String execute() {
userDao.update();
return "SUCCESS";
}
}
3.在构造器上使用注解
@Controller
public class UpdateUserAction {
private UserDao userDao;
@Autowired
public UpdateUserAction(@Qualifier("jdbcUserDaoImpl") UserDao userDao) {
this.userDao = userDao;
}
public String execute() {
userDao.update();
return "SUCCESS";
}
}
我寻见一片海 碧蓝且耀着光
大片船只航行其上 都向着远方
Shared by Foriver_江河