LINUX.ORG.RU

Разыскивается java spring application shell

 ,


0

1

Есть рабочий проект спринг, надо его запустить, подёргать методы классов и посмотреть, что они выдают. Есть ли что-нибудь такое?
https://projects.spring.io/spring-shell/ - не подходит - там, как я понял, надо сперва везде засунуть @ShellComponent и еще кучу всего.
jshell что-то может, но через import и там где @Autowired на @Autowired через @Autowired очевидно ничего работать не будет.
Какие еще есть варианты, чтобы подебажить запущенное приложение через cli?

Ответ на: комментарий от bvn13

Попробую, но это не совсем то, что нужно. Это как дебаг нативного кода, а хочется что-нибудь бы такое, как консоль js в браузере. То есть я не тестирую непосредственно работу приложения с какими-то данными, а просто дёргаю методы классов с какими-то тут же введёнными мной параметрами.
Есть, например у меня

Class SomeServ {
    @Autowired 
    SomeDAO someDAO;
...
}
И хочу я проверить, как работает это someDAO. То есть просто передать параметры какого-нибудь метода ручками, потом получить ответ от этого DAO, распарсить его и посмотреть. Пересобирать каждый раз весь проект, мутить что-то с тестами не охота, это долго, да и грустно тут это всё. JShell - интересен, но к работающему приложению его не пришьёшь, как я понял.

crutch_master ★★★★★
() автор топика
Ответ на: комментарий от crutch_master

Втыкать везде log.info(«alala»)?

мусье бы почитал сначала, прежде чем чушь пороть ;)
нет, это не алала, это java -agentlib:jdwp=transport=dt_socket,server=y,address=8000,suspend=n

https://stackoverflow.com/a/975342

хочется что-нибудь бы такое, как консоль js в браузере

вычислять выражения можно непосредственно в дебаггере

aol ★★★★★
()
Ответ на: комментарий от aol

мусье бы почитал сначала

Почитал, но после того, как ответил.

вычислять выражения можно непосредственно в дебаггере

А методы дёргать?

crutch_master ★★★★★
() автор топика
Ответ на: комментарий от aol

Не, ну если подготовиться, то я могу с таким же успехом тупо переписать всё под rabbitmq. А я не хочу ничего переписывать, конечно же.

crutch_master ★★★★★
() автор топика
Ответ на: комментарий от crutch_master

я могу с таким же успехом тупо переписать

если ты правда спринг используешь, то ничего переписывать не придеся.

aol ★★★★★
()
Ответ на: комментарий от aol

то ничего переписывать не придеся.

Ага. Уже как минимум все модели делал жадными и впихивал что-то, чтобы не было рекурсии при сериализации в json. Тут не всё так ровно.

crutch_master ★★★★★
() автор топика

Один из вариантов - понадобавлять интеграционных тестов. Будет практически полный контроль на системой во время работы твоего проверочного кода, можешь вызывать что и где хочешь.

orm-i-auga ★★★★★
()
Ответ на: комментарий от orm-i-auga

Один из вариантов - понадобавлять интеграционных тестов.

Это да, но состояние проекта не позволит быстро и просто напихать туда тестов.
Вроде ява всё умеет. И тащить в рантайме список методов/полей, и делать invoke. Где-то должна встраиваемая прямо в рантайм jshell.

crutch_master ★★★★★
() автор топика
Последнее исправление: crutch_master (всего исправлений: 3)

на стороне приложения создать SocketServer. к нему можно обращаться через netcat. что набирать в терминале и как будет парсится на стороне спринга это.. как удобно.

barberry ★★
()
Ответ на: комментарий от barberry

Есть уже такая хреновина через rabbitmq. Но мне придётся или всё переписывать, чтобы это работало, или делать какие-то нетривиальные телодвижения. А я терминально ленив.

crutch_master ★★★★★
() автор топика
Ответ на: комментарий от crutch_master

А чего там велосипедить. Есть SpringEL, который может достучаться до любого бина, вызывать его методы и тд. Сделай маленькую байду, которая будут принимать строку, сувать её в SpringEL и отвечать ответом. Делов на несколько строк и там несколько десятков строк обвязки.

Legioner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.