1.注入方式:字段(第一天所演示),构造函数,方法注入
2.构造函数注入
package com.jie.ssm.service.impl;import com.jie.ssm.dao.UserDao;import com.jie.ssm.entity.User;import com.jie.ssm.service.UserService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import java.util.List;@Servicepublic class UserServiceImpl implements UserService { private UserDao userDao; @Autowired public UserServiceImpl(UserDao userDao) { this.userDao = userDao; } @Override public List<User> getAll() { return userDao.selectUsers(); } @Autowired public void setUserDao(UserDao userDao) { this.userDao = userDao; }}
3.方法注入
package com.jie.ssm.service.impl;import com.jie.ssm.dao.UserDao;import com.jie.ssm.entity.User;import com.jie.ssm.service.UserService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import java.util.List;@Servicepublic class UserServiceImpl implements UserService { private UserDao userDao; //构造函数注入 /*@Autowired public UserServiceImpl(UserDao userDao) { this.userDao = userDao; }*/ @Override public List<User> getAll() { return userDao.selectUsers(); } @Autowired public void setUserDao(UserDao userDao) { this.userDao = userDao; }}
4.通过@Repository(“UserDao”)解决不唯一问题(不需要@Primary)
package com.jie.ssm.dao.impl;import com.jie.ssm.dao.UserDao;import com.jie.ssm.entity.User;import org.springframework.context.annotation.Primary;import org.springframework.stereotype.Repository;import java.util.List;//@Primary@Repository("UserDao2")public class UserDaoImpl implements UserDao { @Override public List<User> selectUsers() { System.out.println("UserDaoImpl"); return null; } @Override public User selectByUsername(String username) { return null; } @Override public int insert(User user) { return 0; } @Override public void update(User user) { } @Override public int delete(int id) { return 0; }}
- 规则:开始通过名称去在容器中找,如果名称找不到就靠类型去找。
package com.jie.ssm.service.impl;import com.jie.ssm.dao.UserDao;import com.jie.ssm.entity.User;import com.jie.ssm.service.UserService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.stereotype.Service;import javax.annotation.Resource;import java.util.List;@Servicepublic class UserServiceImpl implements UserService {// @Autowired// @Qualifier("UserDao2") @Resource(name = "UserDao2") private UserDao userDao; //构造函数注入 /*@Autowired public UserServiceImpl(UserDao userDao) { this.userDao = userDao; }*/ @Override public List<User> getAll() { return userDao.selectUsers(); } public void setUserDao(UserDao userDao) { this.userDao = userDao; }}