IOC注解
一.自动扫描装配Bean
常用注释:@Component、@Service、@Controller、@Repository
1)@Component 将java类标记成一个Spring Bean组件。
2)@Service 将业务层实现类标记成一个Spring Bean组件。
3)@Controller 将表现层类标记成一个Spring Bean组件。
4)@Repository 将一个持久层实现类标记成一个Spring Bean组件。
注意 : 均拥有value属性,可以取名字;如果不取名字,默认为类名首字母小写。
@Repository
public class UserDaoJDBCImpl implements UserDao{
@Override
public void showUtils() {
System.out.println("JDBC操作数据库");
}
}
@Repository("userDaoJDBCImpl")
public class UserDaoJDBCImpl implements UserDao{
@Override
public void showUtils() {
System.out.println("JDBC操作数据库");
}
}
二. 自动装配与精确装配
常用注释:@Autowired、@Qualifier、@Resource
1)@Autowired
默认是按照类型装配注入的,如果想按照名称来装配注入,则需要结合@Qualifier一起使用;
2)@Qualifier
常与@Autowired结合使用实现通过名称来装配注入;在@Resource装配注入时,若不想在注解中写name属性,也可以用@Qualifier定义
3)@Resource
默认是按照名称来装配注入的,只有当找不到与名称匹配的bean才会按照类型来装配注入
/**
* @Autowired放置位置
* 1、配置在属性上
* 2、配置在set方法上
* 3、配置在构造方法上
*/
@Service
public class UserServiceImpl implements UserService{
/**
* byType注入
* @Autowired
*/
/**
* byName注入
* @Autowired
* @Qualifier("userDaoJDBCImpl")
*/
private UserDao userDao;
public UserDao getUserDao() {
return userDao;
}
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
@Override
public void useUtils() {
userDao.showUtils();
}
}
/**
* @Resource放置位置
* 1、配置在属性上
* 2、配置在set方法上
*/
@Service
public class UserServiceImpl implements UserService{
/**
* byType注入[不含name属性时,会根据类型自动装配注入]
* @Resource
*/
/**
* byName注入1
* @Resource
* @Qualifier("userDaoJDBCImpl")
*/
/**
* byName注入2
* @Resource(name="userDaoJDBCImpl")
*/
private UserDao userDao;
public UserDao getUserDao() {
return userDao;
}
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
@Override
public void useUtils() {
userDao.showUtils();
}
}