Spring mvc Annotations pour l'interface DAO et DAO de la mise en œuvre

Je voudrais savoir si je suis l'annotation de ces classes correctement, car je suis nouvelle dans les annotations:

Country.java

@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

@Repository
public interface CountryDAO {

    public List<Country> getCountryList();

    public void saveCountry(Country country);

    public void updateCountry(Country country);
}

JdbcCountryDAO.java

@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

@Repository
public interface CountryManagerIFace extends Serializable{

    public void saveCountry(Country country);

    public List<Country> getCountries();
}

CountryManager.java

@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;   

    }
}
  • Le autocâblés de lecture n'est certainement pas à regarder à droite
  • pays ne devrait pas être annotée en tant que Composant si c'est une Entité ou VO. Vous pouvez le laisser comme un simple annotées bean.
  • vous devriez être en annotant la mise en œuvre des classes et vous n'avez pas à vous soucier de l'interface. Évitez également les composants si il n'y a pas une meilleure, plus sémantique option. À première vue, il ressemble à CountryManager est plus probable une @de Service.
  • ce qui devrait être utilisé à la place de composant?
  • Hors de ces classes, j'avais seulement ont CountryManager comme \@Service et JdbcCountryDAO comme @Référentiel. En outre, il est \@Controller pour...les contrôleurs. Coller à ces délimiter vos couches et de souligner l'intention des classes.
  • dois-je encore besoin d'utiliser la fève annotation ainsi?
  • où? vos données les haricots n'ont pas besoin d'être gérés par le conteneur d'injection de dépendances dans de toute façon.
  • je me demandais si il ya une demande pour dire \saveCountry j'ai besoin d'annoter /@Bean sur le CountryManager.java?
  • Non, vous ne devriez pas. Le Haricot d'annotation est si vous avez eu quelque chose comme une usine pour vos dépôts besoin d'eux inscrit dans le contexte après qu'ils ont été créés.
  • Orr ok, je vois, hey merci beaucoup de l'homme, pense vraiment que vous devriez formular tout ce que vous avez dit comme réponse. Vous semblez très bien avec l'usage du printemps, de nombreux ppl a dit toutes sortes de choses quand il est venu à des annotations pour moi c'est pourquoi je fais appel agin ce moment avec certains de mon code.
  • si il m'arrive d'appeler countryDAO à tout moment would'nt je \@Autocâblés il ? comment le printemps le trouver si l'CountryDAO.java n'est pas annoté?
  • Parce que la mise en œuvre de la classe (JdbcCountryDAO) est annoté elle sera disponible comme un Printemps Bean. Avec la valeur par défaut autowire comportement (par type), il sera ensuite injecté pour ceux qui recherchent l'interface qu'elle met en œuvre (CountryDAO). Ne pas injecter des interfaces (car ils ne sont pas valides types d'objets de toute façon), ils sont juste utilisés pour qualifier ce que les classes seront injectés par le type de référence.

InformationsquelleAutor devdar | 2012-09-30