package com.atguigu.spring.dao;
public interface UserDao {
void saveUser();
}
package com.atguigu.spring.dao;
import org.springframework.stereotype.Repository;
/*
添加了主键的类默认在IOC容器中创建的对象的id是类名的首字母小写,我们可以通过该注解的value
属性来指定该id,而且value属性名可以省略不写
*/
//@Repository(value = "userDao")
@Repository("userDao1")
public class UserDaoImpl implements UserDao {
public void saveUser() {
System.out.println("UserDaoImpl正在向数据库中插入用户信息!");
}
}
package com.atguigu.spring.service;
public interface UserService {
void saveUser();
}
package com.atguigu.spring.service;
import com.atguigu.spring.bean.User;
import com.atguigu.spring.dao.UserDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
@Service("userService")
public class UserServiceImpl implements UserService {
/*
依赖注入的步骤:
1.根据属性的类型实现注入
2.如果根据属性的类型无法实现注入,则以属性名作为id从IOC容器中寻找,实现注入
3.我们还可以通过@Qualifier注解的value属性来指定id实现依赖注入,value属性名可以省略不写
*/
@Qualifier(value = "userDao1")
@Autowired
private UserDao userDao;
/*
添加了@Autowired注解的属性默认必须注入成功,否则会抛出异常,我们可以通过指定required属性的
值为false来告诉Spring,如IOC容器中没有对应的对象可以不注入
*/
@Autowired(required = false)
private User user;
public void saveUser() {
//调用UserDao中的saveUser方法将用户信息插入到数据库中
userDao.saveUser();
}
}