
Vladislav
21.04.2017
16:29:07
спс

Pavel ?
21.04.2017
22:39:01

Victor
22.04.2017
09:00:40
Кто подскажет, что изменилось в Java 8, что этот код стал компилироваться https://ideone.com/L24yl5 ?
На ранних версиях нельзя было сделать throw throwable, компилятор говорил, что в методе run нет throws, предлагалось обернуть всё в try/catch. В Java 8 это теперь компилируется.

Adam
22.04.2017
09:02:37
ну по идее должно компилиться

Google

Adam
22.04.2017
09:02:56
он видит что это unchecked exception и его можно спокойно пробросить дальше

Victor
22.04.2017
09:04:49
При target 1.6 пишет "Error: unreported exception java.lang.Throwable; must be caught or declared to be thrown"

Nikolay
22.04.2017
09:05:35
А с 1.5 не пробовал?

Adam
22.04.2017
09:06:00
https://docs.oracle.com/javase/specs/jls/se8/html/jls-14.html#jls-14.18
попробуй такую штуку погуглить для j6

Andrey
22.04.2017
09:06:18

Adam
22.04.2017
09:06:18
может там в спецификации были различия

Andrey
22.04.2017
09:07:18

Adam
22.04.2017
09:07:34
ты не понял что я написал
компилятор видит что вызывается метод у Runnable который не объявляет checked исключения, поэтому он делает вывод что Throwable который прилетит это какой то рантайм
либо еррор и тут уже пофиг

Andrey
22.04.2017
09:09:38

Google

Victor
22.04.2017
09:10:03

Sergey
22.04.2017
09:11:53
как вы в спринге боритесь с одинаковыми именами в разных пакетах для компонентов?
ну скажем есть
@Component
package1.Client
@Component
package2.Client
они оба будут зареганы как "client" и будет конфликт. можно указывать имя компонента, но как-то не айс

Nick
22.04.2017
09:12:23

Andrey
22.04.2017
09:12:28

Sergey
22.04.2017
09:13:20

Nick
22.04.2017
09:14:03
а зачем ты его именуешь? инжект по интерфейсу нельзя делать?
или у них интерфейс одинаковый?

Sergey
22.04.2017
09:14:32
разный интерфейс, разные компоненты, но спрингу не нравится что у них имя одинаковое

Ruslan
22.04.2017
09:14:38

Sergey
22.04.2017
09:14:40
он же их всех регает

Ruslan
22.04.2017
09:14:50
У них же есть какаято цель
И если они имеют разную имплементацию
Значит она разная
Вот тебе и название появляется

Sergey
22.04.2017
09:15:34
ок, допустим один пакет у нас twitter, другой facebook. оба имеют классы Client
facebook.FacebookClient как-то лишнее
нахрена тогда пакеты вообще

Ruslan
22.04.2017
09:16:08
"TwitterCliet"
"FacebookClient"
Очевидно

Sergey
22.04.2017
09:16:30
они и так в нужных пакетах уже лежат. зачем дополнительно задавать префикс?

Google

Nick
22.04.2017
09:16:40
ты в один класс два клиента инжектишь?)

Sergey
22.04.2017
09:16:49
не

Ruslan
22.04.2017
09:16:54

Nick
22.04.2017
09:16:59
ну тогда не должно быть вопросов

Sergey
22.04.2017
09:17:02

Nick
22.04.2017
09:17:05
у них типы разные

Ruslan
22.04.2017
09:17:11
Ну тогда непончтно

Nick
22.04.2017
09:17:15
тебе не надо их именовать даж

Sergey
22.04.2017
09:17:17
вопрос в том что спринг не может их зарегать в контейнере из-за того что у них short имена одинаковые получаются

Ruslan
22.04.2017
09:17:19
Зачем тебе бин называть клиент
Это абсолютно ничего не говорит о его цели
Может лучше положить их в один пэкедж типа clients и называть подобающе

Ruslan
22.04.2017
09:18:12
Тебе в данном слцчае просто имя класса никак не говорит о цели

Sergey
22.04.2017
09:18:13
бин клиент из пакета твиттер вполне очевидно чей это клиент

Ruslan
22.04.2017
09:18:29
Мы сейчас говорим уже о бинах

Sergey
22.04.2017
09:19:11
этот бин нигде кроме как в этом пакете не будет использоваться

Ruslan
22.04.2017
09:19:35
Ну спрингу то пофиг в каком оно там пакете
Бины ты на контекст поднимаются
Просто когда читаешь код
private final Client client;
Както не очень понятно что это? А если тебе в работе с твиттером понадобилась аутентификация через фейсбук? Мне надо смотреть в импорты чтоли чтобы понять что за клиент и что он делает?
Помоему куда понятнее
private final Client twitterClient;

Nick
22.04.2017
09:22:10
@Enleur че эт у тебя short name юзается в качестве id

Google

Sergey
22.04.2017
09:22:35

Ruslan
22.04.2017
09:22:49
Ну какбы если ты сделаешь так то твоя проблема уйдет
Потому что если у тебя две имплементации клиента под назыанием teitterClient то ты чтото делаешь не так
А просто клиентов в одном проекте десятки могут быть и как ты их различать хочешь

Admin
ERROR: S client not available

sss3 ?
22.04.2017
09:25:11
Кажется нет

Sergey
22.04.2017
09:25:18
http://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/annotation/AnnotationBeanNameGenerator.html
If the annotation's value doesn't indicate a bean name, an appropriate name will be built based on the short name of the class (with the first letter lower-cased). For example:
com.xyz.FooServiceImpl -> fooServiceImpl

Ruslan
22.04.2017
09:26:51
Это то понятно

Nick
22.04.2017
09:27:40
тебе какая разница то как назвать то его?

Sergey
22.04.2017
09:28:06
бин или сам класс?

Nick
22.04.2017
09:28:28
бин

Sergey
22.04.2017
09:28:50
ну хз, напрягает как-то эта строка)

Nick
22.04.2017
09:28:54
ааа
ну тогда все понятно

Sergey
22.04.2017
09:29:12
неужели на проекте не может быть 2 одинаковых имени класса

Nick
22.04.2017
09:29:15
напиши свои BeanNameGenerator

Sergey
22.04.2017
09:29:51
да вот думал, но хз на сколько это ок

Google

Sergey
22.04.2017
09:30:00
да и не везде это нужно
думал может сделать доп аннотацию и тогда она в имя компонента будет тянуть еще имя пакета в котором он лежит

Митко Соловец?
22.04.2017
09:34:51
@Component("FacebookClient")
@Component("TwitterClient")

Sergey
22.04.2017
09:35:22
вот сейчас так да

Митко Соловец?
22.04.2017
09:35:40
если не указывать бин нейм, он по дефолту берем имя класса в камелкэйсе
вот и конфликт возникает

Sergey
22.04.2017
09:35:57
вот в том то и проблема
у меня 10 разных провайдеров и у всех есть похожие классы внутри Client, RequestBuilder и тд. приходится каждому дописывать имя бина что бы не было конфликтов
неудобно пздц

Митко Соловец?
22.04.2017
09:36:42
указывай бин нейм и квалифиер - это правильный совет, если знать, что спринг ищет бины по имени

Ivan
22.04.2017
09:37:34

Sergey
22.04.2017
09:38:17
разве что сделать модуль и через java config собирать)

Ivan
22.04.2017
09:38:34
ну и в Java вообще не советуют одинаковые названия классов юзать