您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
11-Spring注解开发-原始注解详解1(Repository、Service、Resource注解)
发布时间:2024-12-22 20:20:24编辑:雪饮阅读()
-
Repository与Component功能相同,只是在dao层建议用Repository是可读性更高一些
Service与Component功能相同,只是在service层建议用Service是可读性更高一些
使用Autowired与Qualifier之后,则实现类中可以不用对被注解的属性些setter方法,会利用反射的原理进行注入的
使用Autowired后则Qualifier其实也可以不要,会自动寻找被注入数据类型的对应注解,例如这里就会寻找UserDao进行注入
但据说@Repository("userDao")注解出现多个匹配的时候就不行
而 @Autowired相当于自动寻找匹配数据类型进行注入,那么结合Qualifier则相当于进一步限定了类似bean的id必须为userDao(@Repository("userDao"))
而 @Resource(name="userDao")就相当于
@Autowired
@Qualifier("userDao")
那么基于此,上篇中我们的dao层注解还可以进一步优化:
package com.wzgy.dao.impl;
import com.User;
import com.wzgy.dao.UserDao;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.Map;
import java.util.Properties;
@Repository("userDao")
/*
Repository与Component功能相同,只是在dao层建议用Repository是可读性更高一些
**/
public class UserDaoImpl implements UserDao {
private int age;
private String name;
private List<String> strList;
private Map<String, User> userMap;
private Properties properties;
public void setStrList(List<String> strList) {
this.strList = strList;
}
public void setUserMap(Map<String, User> userMap) {
this.userMap = userMap;
}
public void setProperties(Properties properties) {
this.properties = properties;
}
public void setAge(int age) {
this.age = age;
}
public void setName(String name) {
this.name = name;
}
public UserDaoImpl(){
System.out.println("-----UserDaoImpl被创建--------");
}
public void save() {
System.out.println("-----UserDaoImpl save: name:"+name+",age:"+age);
System.out.println("-----UserDaoImpl save: strList:"+strList+",userMap:"+userMap+",properties:"+properties);
}
public void init(){
System.out.println("执行了init方法");
}
public void destroy(){
System.out.println("执行了destroy方法");
}
}
然后service层的注解也同样可以进一步优化:
package com.wzgy.service.impl;
import com.wzgy.dao.UserDao;
import com.wzgy.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.annotation.Resources;
@Service("userService")
/*
Service与Component功能相同,只是在service层建议用Service是可读性更高一些
* */
public class UserServiceImplement implements UserService {
@Resource(name="userDao")
private UserDao userDao;
/*
@Autowired
@Qualifier("userDao")
private UserDao userDao;
使用Autowired与Qualifier之后,则实现类中可以不用对被注解的属性些setter方法,会利用反射的原理进行注入的
使用Autowired后则Qualifier其实也可以不要,会自动寻找被注入数据类型的对应注解,例如这里就会寻找UserDao进行注入
但据说@Repository("userDao")注解出现多个匹配的时候就不行
@Autowired
private UserDao userDao;
而 @Autowired相当于自动寻找匹配数据类型进行注入,那么结合Qualifier则相当于进一步限定了类似bean的id必须为userDao(@Repository("userDao"))
而 @Resource(name="userDao")就相当于
@Autowired
@Qualifier("userDao")
* */
public UserServiceImplement() {}
public UserServiceImplement(UserDao userDao) {
this.userDao = userDao;
}
public void save() {
userDao.save();
}
}
关键字词:Repository,Service,Resource,注解
上一篇:10-Spring注解开发-原始注解入门操作(SpringConfig配置整合包扫描dao层及service层的注解简化配置文件)
下一篇:12-Spring注解开发-原始注解详解2(Value、Scope、PostConstruct、PreDestroy注解)