基于注解方式实现属性注入
(1)@Autowired:根据属性类型进行自动装配(xml byType)
第一步:把service和dao对象创建,在service和dao类添加创建对象注解(xml byName)
第二步:在service注入dao对象,在service类添加dao类型属性,在属性上面使用注解 (可以根据类型也可以根据名称)
@Repository
public class UserDaoImpl implements UserDao{
@Override
public void add() {
System.out.println("dao add .....");
}
}
@Service
public class UserService {
//定义dao类型属性
//不需要添加set方法
//添加注入属性注解
@Autowired//根据类型注入
private UserDao userDao;
public void add(){
System.out.println("service add .....");
userDao.add();
}
}
(2)@Qualifier:根据名称进行注入
这个@Qualifier注解的使用,和上面@Autowired一起使用
@Repository("userDaoImplTe")
public class UserDaoImpl implements UserDao{
@Override
public void add() {
System.out.println("dao add .....");
}
}
@Service
public class UserService {
//定义dao类型属性
//不需要添加set方法
//添加注入属性注解
@Autowired //根据类型注入
@Qualifier(value = "userDaoImplTe") //根据名称(value)进行注入
private UserDao userDao;
public void add(){
System.out.println("service add .....");
userDao.add();
}
}
(3)@Resource:可以根据类型注入,可以根据名称注入
非spring注解,java扩展包注解
@Service
public class UserService {
//定义dao类型属性
//不需要添加set方法
//添加注入属性注解
// @Autowired //根据类型注入
// @Qualifier(value = "userDaoImplTe") //根据名称(value)进行注入
//@Resource //默认 没有定义 name值时 根据类型注入
@Resource(name = "userDaoImplTe") // name有值时 根据名称注入
private UserDao userDao;
public void add(){
System.out.println("service add .....");
userDao.add();
}
}
(4)@Value:注入普通类型属性
@Service
public class UserService {
//定义dao类型属性
//不需要添加set方法
//添加注入属性注解
// @Autowired //根据类型注入
// @Qualifier(value = "userDaoImplTe") //根据名称(value)进行注入
@Value(value = "hello")
private String str;
//@Resource //默认 没有定义 name值时 根据类型注入
@Resource(name = "userDaoImplTe") // name有值时 根据名称注入
private UserDao userDao;
public void add(){
System.out.println("service add ....."+str);
userDao.add();
}
}
执行结果:
com.spring5.service.UserService@184cf7cf
service add .....hello
dao add .....