powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring IoC, DAO и синглтон
25 сообщений из 46, страница 1 из 2
Spring IoC, DAO и синглтон
    #37733810
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мой вопрос наверно покажется глупым)
При изучении сервлетов я читал что при обработке запроса doGET скажем, внутри метода надо создавать новый экземпляр DAO например myDAOImpl и работать с ним. Для этого чтобы не было запросов к одному объекту myDAOImpl из разных запросов/потоков.
В примерах по Spring MVC обычно делают DI в следующем порядке: HibernateTemplate - DAOImpl - ServiceImpl -> Controller
Как я понимаю по умолчанию(как показано в примерах) Spring создает синглетон бинов. Как в это случае не происходит проблем с конкурентным доступом? Ведь тогда во всех запросах будет использовать один и тот же экземпляр ServiceImpl, соответственно один и тот же DAOImpl и HibernateImpl.
...
Рейтинг: 0 / 0
Spring IoC, DAO и синглтон
    #37733965
Шмяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отличный вопрос! Ну, для начала попробуем понять, что же такое пул коннектов? Конкурентный доступ эт когда много потоком одновременно меняют состояние одного объекта, тут такого не происходит. Потоки получают данные из одного метода и все. При этом даже сессии у них различны(могут быть) и количество потоков ограничено размером пула.
...
Рейтинг: 0 / 0
Spring IoC, DAO и синглтон
    #37733968
Шмяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кароч проще открыть мануал и почитать теорию! И ваще, а почему тебя не интересует вопрос, что сервлет один а метод doGet дергает несколько потоков, аналогичная ведь ситуация?
...
Рейтинг: 0 / 0
Spring IoC, DAO и синглтон
    #37733992
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Допустим сервлет.

Правильно:

doGet () {

MyDao dao = new MyDao();
dao.func();

}


Неправильно:

public class Servlet.... {

private Mydao dao = new MyDao();

doGet () {

dao.func()

}

}


Для спринга:


@Controller
class .... {

@Autowired
Service service (или dao)

@RequestMapping
post() {

service.func(); // service то для всех один будет, так?

}

}
...
Рейтинг: 0 / 0
Spring IoC, DAO и синглтон
    #37734030
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
new MyDao? - Это уже не Спринг. DI как бы для того и есть, чтобы передать контроллеру существующий, уже созданный ДАО. Аналогично и с сессией, и с зависимыми сервисами и контроллерами.
...
Рейтинг: 0 / 0
Spring IoC, DAO и синглтон
    #37734032
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruck, посмотри внимательно) часть я написал для простых сервлетов, а часть для спринга. Там нет new().
...
Рейтинг: 0 / 0
Spring IoC, DAO и синглтон
    #37734096
silvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rdm, как я себе представляю на пальцах по вашему примеру:
Controller наследник спрингового сервлета отвечает за потоки.приходят поток1 и поток 2 в контролер. контролер обращается к сервису сначала с вопросом на основании поток1, а потом поток 2 или наоборот. т.е. пока сервис занят одним потоком второй ждет. в спринге инжектящийся класс синглтон по дефолту, но если надо он может быть например прототипом (т.е. экземпляр создается на реквест\сессию\..)
...
Рейтинг: 0 / 0
Spring IoC, DAO и синглтон
    #37734097
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdmIDVsbruck, посмотри внимательно) часть я написал для простых сервлетов, а часть для спринга. Там нет new().
Сервисы и DAO должны быть stateless. Тогда проблем с многопоточностью не будет.
...
Рейтинг: 0 / 0
Spring IoC, DAO и синглтон
    #37734099
silvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rdm во всех запросах будет использовать один и тот же экземпляр ServiceImpl
экземпляр один, а выдает не обязательно одно и тоже, а то, что вы хотите
...
Рейтинг: 0 / 0
Spring IoC, DAO и синглтон
    #37734105
silvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LeonidvСервисы должны быть stateless.
а если данные статичны? например: Сервис вертает карты справочники.
...
Рейтинг: 0 / 0
Spring IoC, DAO и синглтон
    #37734131
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
silvanт.е. пока сервис занят одним потоком второй ждет
пример кода есть. что ...он ждёт...?
...
Рейтинг: 0 / 0
Spring IoC, DAO и синглтон
    #37734140
silvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123, нет.предположение.вдруг какие статичные методы вызываем. коды у автора топика спросите)
...
Рейтинг: 0 / 0
Spring IoC, DAO и синглтон
    #37734175
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
silvan,
ну да. Надо аффтару привести более конкретный код с ПРОБЛЕМОЙ.
imho
в вопросе намешаны несколько вопросов. Потокобезопасные объекты\сингелетоны\DAO\Хибер.
Каждый элемент можно написать потокоустойчивым и нет. Безотносительно DI.
...
Рейтинг: 0 / 0
Spring IoC, DAO и синглтон
    #37734262
Шмяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Афтор жжот! Пожалуйста почитай мануал? Ты сам не понимаешь, что пишешь.
rdmПравильно:

doGet () {


Этот метод у кого? У сервлета. Сервлет то тоже синглтон! Подумай, почему работает то?
Начни с азов, рановато тебе еще сервлеты и хибернеты всякие.
Сервис один, а метод для каждого возвращает разные значения!
НАСТОЯТЕЛЬНО РЕКОМЕНДУЮ ПОЧИТАТЬ МАНУАЛ!
...
Рейтинг: 0 / 0
Spring IoC, DAO и синглтон
    #37734316
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
silvanLeonidvСервисы должны быть stateless.
например: Сервис вертает карты справочники.
Раскройте пример.
...
Рейтинг: 0 / 0
Spring IoC, DAO и синглтон
    #37734349
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот пример (с хабра) ссылка

@Repository
public class ContactDAOImpl implements ContactDAO {

@Autowired
private HibernateTemplate hibernateTemplate;

public void addContact(Contact contact) {
hibernateTemplate.save(contact);
}

}



@Service
public class ContactServiceImpl implements ContactService {

@Autowired
private ContactDAO contactDAO;

@Transactional
public void addContact(Contact contact) {
contactDAO.addContact(contact);
}


}



public class ContactController {

@Autowired
private ContactService contactService;



@RequestMapping(value = "/add", method = RequestMethod.POST)
public String addContact(@ModelAttribute("contact") Contact contact,
BindingResult result) {

contactService.addContact(contact);

return "redirect:/index";
}


}


Меня даже собственно не волнует вопрос почему это правильно, если это правильно и проблем с конкурентным доступом нет.
...
Рейтинг: 0 / 0
Spring IoC, DAO и синглтон
    #37734385
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Другими словами, такую структуру можно использовать только как пример или она правильная? )
...
Рейтинг: 0 / 0
Spring IoC, DAO и синглтон
    #37734386
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonidv, а как обеспечить stateless? Спринг сам за этим следит?
...
Рейтинг: 0 / 0
Spring IoC, DAO и синглтон
    #37734396
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdmLeonidv, а как обеспечить stateless? Спринг сам за этим следит?
Девелопер сам за этим следит.
...
Рейтинг: 0 / 0
Spring IoC, DAO и синглтон
    #37734407
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Bean factorу поддерживает два вида объектов:

Синглтон: в данном случае создается один разделяемый экземпляр объекта с определенным именем, которое будет возвращено при поиске. Это применяемый по умолчанию и наиболее часто используемый режим, идеальный для сервисных stateless-объектов.

Правильно? Я примерно такого ответа ждал)
...
Рейтинг: 0 / 0
Spring IoC, DAO и синглтон
    #37734543
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdmBlazkowicz,

Bean factorу поддерживает два вида объектов:

Синглтон: в данном случае создается один разделяемый экземпляр объекта с определенным именем, которое будет возвращено при поиске. Это применяемый по умолчанию и наиболее часто используемый режим, идеальный для сервисных stateless-объектов.

Правильно? Я примерно такого ответа ждал)
Лучше помнить, что scope больше, чем два
http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/beans.html#beans-factory-scopes

А так правильно. Делаем stateless (т.е. разным потокам просто нечего совместно использовать) или же делаем синхронизацию там, где это нужно (первый вариант сильно лучше).
...
Рейтинг: 0 / 0
Spring IoC, DAO и синглтон
    #37734550
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdmBean factorу поддерживает два вида объектов:
Синглтон: в данном случае создается один разделяемый экземпляр объекта с определенным именем, которое будет возвращено при поиске. Это применяемый по умолчанию и наиболее часто используемый режим, идеальный для сервисных stateless-объектов.
Правильно? Я примерно такого ответа ждал)
Spring Singleton, в отличие от Stateless Session Bean, не заводит никаких пулов, чтобы гарантировать отсутствие состояние между сессиями.

А какой "второй" ? :)
...
Рейтинг: 0 / 0
Spring IoC, DAO и синглтон
    #37734552
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И, да scope это не совсем "вид объекта".
...
Рейтинг: 0 / 0
Spring IoC, DAO и синглтон
    #37734560
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz, я нагуглил статью 2004 года. Второй там был прототип. вот .
Собственно не понял как синглтон без состояния может безопасно использоваться разными потоками, ну да ладно) главное работает)
...
Рейтинг: 0 / 0
Spring IoC, DAO и синглтон
    #37734566
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonidv, спасибо!
...
Рейтинг: 0 / 0
25 сообщений из 46, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring IoC, DAO и синглтон
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]