2013-03-16 2 views
2

В моем приложении я использую среду Spring3 MVC. У меня есть класс DAO TestDAO1.java, в котором мне нужен метод getArticleList(), который объявлен в классе TestDAO2.java.Как вставить объект DAO другому классу DAO весной 3

Как я знаю, мы можем вводить объекты уровня обслуживания в контроллеры и DAO на сервисный уровень. Но можем ли мы ввести объект DAO в класс DAO?

Здесь я хочу ввести объект класса TestDAO2 в класс TestDAO1.java. Поэтому я могу использовать метод getArticleList(). Как мне это сделать ?

Правильный ли стандарт или стандарт для ввода DAO в DAO?

ответ

5

Здесь я хочу ввести объект класса TestDAO2 в класс TestDAO1.java. Поэтому я могу использовать метод getArticleList(). Как мне это сделать ?

так же, как вы вводите один в контроллер - например, используя @Autowired аннотацию:

public class TestDAO2 { 
    @Autowired private TestDAO1 dao1; 
    .... 

нет никакой разницы, впрыскивается объект службы или другой DAO.

Правильно ли это вариант или стандарт для ввода DAO в DAO?

в общем: нет. Эта ситуация указывает там может быть некоторыми проблемами дизайна в вашей модели или DAO. возможно, ваш TestDAO1 делает слишком много? попробуйте переместить эту функциональность в службу , которая использует оба DAO!

+0

+1 для не только решения вопроса ОП, но и мышления на один уровень глубже (что касается возможной проблемы проектирования). – user1766760

+0

@mantrid: Спасибо за ответ. DAO-инъекция отлично работает с аннотацией Autowired. И я согласен с тем, что с моим приложением возникла проблема с дизайном, которая заставила меня ввести DAO в DAO. Но с целью повторного использования кода я попытался использовать функциональность, которая объявлена ​​в какой-либо другой DAO. В соответствии с моим дизайном приложения для «каждого» объекта я создаю новый класс DAO, который использует CRUD-методы. Так как в моем представлении это проблема с дизайном базы данных. Я думаю, я должен создать более оптимизированный дизайн БД, чтобы такие случаи не возникали. –

Смежные вопросы