首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DAO接口和DAO实现的SpringMvc注释

DAO接口和DAO实现的SpringMvc注释
EN

Stack Overflow用户
提问于 2012-09-30 02:27:26
回答 1查看 27.3K关注 0票数 9

我想知道我是否正确地注释了这些类,因为我对注释是新手:

Country.java

代码语言:javascript
复制
@Component
public class Country {

private int countryId;
private String countryName;
private String countryCode;

/**
 * No args constructor
 */
public Country() {
}

/**
 * @param countryId
 * @param countryName
 * @param countryCode
 */
public Country(int countryId, String countryName, String countryCode) {
    this.countryId = countryId;
    this.countryName = countryName;
    this.countryCode = countryCode;
}
    //getters and setters   

}

CountryDAO.java

代码语言:javascript
复制
@Repository
public interface CountryDAO {

    public List<Country> getCountryList();

    public void saveCountry(Country country);

    public void updateCountry(Country country);
}

JdbcCountryDAO.java

代码语言:javascript
复制
@Component
public class JdbcCountryDAO extends JdbcDaoSupport implements CountryDAO{

    private final Logger logger = Logger.getLogger(getClass());

    @Autowired
    public List<Country> getCountryList() {
        int countryId = 6;
        String countryCode = "AI";
        logger.debug("In getCountryList()");
        String sql = "SELECT * FROM TBLCOUNTRY WHERE countryId = ? AND countryCode = ?";
        logger.debug("Executing getCountryList String "+sql);

        Object[] parameters = new Object[] {countryId, countryCode};

        logger.info(sql);

        //List<Country> countryList = getJdbcTemplate().query(sql,new CountryMapper());
        List<Country> countryList = getJdbcTemplate().query(sql, parameters,new CountryMapper());
        return countryList;
    }

CountryManagerIFace.java

代码语言:javascript
复制
@Repository
public interface CountryManagerIFace extends Serializable{

    public void saveCountry(Country country);

    public List<Country> getCountries();
}

CountryManager.java

代码语言:javascript
复制
@Component
public class CountryManager implements CountryManagerIFace{

    @Autowired
    private CountryDAO countryDao;

    public void saveCountry(Country country) {
        countryDao.saveCountry(country);

    }

    public List<Country> getCountries() {
        return countryDao.getCountryList();
    }


    public void setCountryDao(CountryDAO countryDao){

        this.countryDao = countryDao;   

    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-30 14:48:39

这个答案应该能澄清一点:What's the difference between @Component, @Repository & @Service annotations in Spring?

其他你应该知道的事情:

  • 您的实体和接口不需要任何注释。实际上,@Component和其他派生注释只意味着您正在动态声明Spring。例如, @Component public class MyComponent {.} 默认情况下,将在Spring的上下文中添加一个名为"myComponent“的bean。缺省情况下,Spring是单个对象,并表示实际实例化的对象。 因此,将实体或接口声明为Spring是没有意义的。
  • 管理器在语义上与服务相同,因此您应该使用@Service对它们进行注释。

您的代码应该是这样的:

代码语言:javascript
复制
// No annotation
public class Country {

代码语言:javascript
复制
// No annotation
public interface CountryDAO {

代码语言:javascript
复制
@Repository
public class JdbcCountryDAO extends JdbcDaoSupport implements CountryDAO {

代码语言:javascript
复制
// No annotation
public interface CountryManagerIFace extends Serializable{

代码语言:javascript
复制
@Service
public class CountryManager implements CountryManagerIFace{

    @Autowired
    private CountryDAO countryDao;

注意:我很少在代码中使用@Component作为@Controller (表示层)、@Service (服务层)和@Repository (dao层)来满足我的主要Spring需求。

票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12658136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档