Spring依赖注入
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(); } }