Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2 3      [все]
 Autowired bean is null  [new]
Molasar
Member

Откуда:
Сообщений: 829
Всем привет!

Почему объект testBean равен null в методе ExecutorListener.contextInitialized()?

@Service
public class TestBean {

    private String name;
    
    @PostConstruct
    private void init() {
        this.name = "My name";
    }

    public String getName() {
        return name;
    }
    
}

@WebListener
public class ExecutorListener implements ServletContextListener {

    @Autowired
    private TestBean testBean;

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
    }

    @Override
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println(testBean.getName());
    }

}


автор
08-Sep-2020 10:05:31.829 SEVERE [http-nio-8080-exec-6] org.apache.catalina.core.StandardContext.listenerStart Exception sending context initialized event to listener instance of class [com.example.beantester.ExecutorListener]
java.lang.NullPointerException
at com.example.beantester.ExecutorListener.contextInitialized(ExecutorListener.java:24)
8 сен 20, 10:15    [22193377]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
crutchmaster
Member

Откуда: оттуда.
Сообщений: 1797
Molasar,
Потому что autowired не сделался. По моему TestBean можно засунуть агрументом в метод и сделать его @AutoWired, но это - не точно.
8 сен 20, 10:51    [22193405]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
Molasar
Member

Откуда:
Сообщений: 829
Чтобы сработал @Autowired, нужно сделать вот так:

    @Override
    public void contextInitialized(ServletContextEvent sce) {
        WebApplicationContextUtils
            .getRequiredWebApplicationContext(sce.getServletContext())
            .getAutowireCapableBeanFactory()
            .autowireBean(this);

        System.out.println(testBean.getName());
    }
8 сен 20, 11:17    [22193425]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5596
Molasar,

Потому что JavaEE/JakartaEE можно засунуть в Spring, а наоборот нужно извратиться. :-)

Сделайте свой бин TestBin бином JavaEE/JakartaEE.
Аннотации @Statefull, @Stateless, @Singlton. Обращаться через @Inject ( а не @Autowired)

Ну или используйте только Spring :-)
8 сен 20, 12:37    [22193500]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4378
Похожая ситуация
Это работает
@Controller
public class UserController {

    @Autowired
    ServiceUserDB serviceUserDB;


А это нет, объект NULL
@Component
public class SecurityHandler implements AuthenticationSuccessHandler {

    @Autowired
    ServiceUserDB serviceUserDB;


Все дело в наследовании или в @Controller и @Component?
3 ноя 20, 10:08    [22225506]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5596
SQL2008
Похожая ситуация
...
Все дело в наследовании или в @Controller и @Component?


А если попробовать не через аннотацию @Controller, а через класс @Сonfig и @Bean ?

И инжекцию сделать через конструктор, а не через поле.

Хотя вообще-то странно.
По идее @Component должен при загрузку приложения падать (ну или в логах ругнуться).
С ошибкой создания бина.
3 ноя 20, 12:16    [22225576]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4378
mad_nazgul
А если попробовать не через аннотацию @Controller, а через класс @Сonfig и @Bean ? И инжекцию сделать через конструктор, а не через поле.

Хочется чтобы все было в едином стиле.
И чисто академически интересует этот вопрос - почему в одном месте работает, а в другом нет?
Чего я не понимаю?
3 ноя 20, 19:20    [22225930]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
Lelouch
Member

Откуда: Москва
Сообщений: 1879
SQL2008,

А каким образом securityHandler создаётся?
3 ноя 20, 22:16    [22226015]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5596
SQL2008
mad_nazgul
А если попробовать не через аннотацию @Controller, а через класс @Сonfig и @Bean ? И инжекцию сделать через конструктор, а не через поле.

Хочется чтобы все было в едином стиле.
И чисто академически интересует этот вопрос - почему в одном месте работает, а в другом нет?
Чего я не понимаю?


Чтобы понять, нужно глубоко разбираться в жизненном цикле бинов.
И там есть куча неоднозначного поведения, в зависимости от того как создаются бины.

Т.к. по двум классам нельзя понять как поднимается Spring-context, то сказать почему - не возможно.


Пока посмотрите как создается бин SecurityHandler и где он используется.

А так рекомендую мигрировать с аннотаций, на @Config клаассы и инжекцию через конструктор.

1) Легче будет писать Unit-тесты, без поднятия всего контекста
2) Вся "грязь" будет в специально отведенном загончике
3) Можно будет отлаживать поднятие контекста
4 ноя 20, 06:50    [22226106]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 6525
mad_nazgul
есть куча неоднозначного поведения, в зависимости от того как создаются бины.
именно. И это есть декларативное программирование вместо obj = new Class.
Свои плюсыминусы
4 ноя 20, 09:18    [22226123]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4378
Lelouch
SQL2008,

А каким образом securityHandler создаётся?


В application-context.xml
 <bean id="myAuthenticationSuccessHandler"
          class="bla.bla.bla.SecurityHandler" />


А потом прописывается в security-config.xml
<form-login login-page="/login.html" authentication-success-handler-ref="myAuthenticationSuccessHandler"
                    username-parameter="username"
                    password-parameter="password"
                    login-processing-url="/j_spring_security_check"
                    authentication-failure-url="/login.html?error=true" />


Причем все работает, управление после успешной авторизации получает.
Но внутри не могу связать bean
4 ноя 20, 18:04    [22226348]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
Zzz79
Member

Откуда:
Сообщений: 1007
mad_nazgul


А так рекомендую мигрировать с аннотаций, на @Config клаассы и инжекцию через конструктор.

1) Легче будет писать Unit-тесты, без поднятия всего контекста
2) Вся "грязь" будет в специально отведенном загончике
3) Можно будет отлаживать поднятие контекста


Конструктор это полнейшая шляпа для инжекта

плюсы- простое написание юнит тестов

минусы- все остальное

у меня класс 200+ полей например( что по сути обычная практика в ентерпрайзе) какие то поля обязательны,какие то нет-когда какие будут я не знаю- как я по твоему буду конструкторы оформлять делать 200*200 конструктров под каждый вариант?

меня больше всего веселит ,что мне уже и идея начинает подчеркивать @Autowired поля
4 ноя 20, 18:27    [22226353]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
Zzz79
Member

Откуда:
Сообщений: 1007
SQL2008
Lelouch
SQL2008,

А каким образом securityHandler создаётся?


В application-context.xml
 <bean id="myAuthenticationSuccessHandler"
          class="bla.bla.bla.SecurityHandler" />


А потом прописывается в security-config.xml
<form-login login-page="/login.html" authentication-success-handler-ref="myAuthenticationSuccessHandler"
                    username-parameter="username"
                    password-parameter="password"
                    login-processing-url="/j_spring_security_check"
                    authentication-failure-url="/login.html?error=true" />


Причем все работает, управление после успешной авторизации получает.
Но внутри не могу связать bean

а зачем ты ставишь компонент над классом который ты уже записал в бины ,причем с другим названием в контекст-соотвственно и далее ты подставляешь этот бин из контекста в сприг секурити,не понятно что ты хотел в итоге то получить= так как @component эта та анотация ,видя которую спринг при скане пакетов - создает бин и кладет его в контекст,а тут у тебя один и тот же класс два раза кладется в контекст судя по всему

пс. мой тебе совет юзай спринг бут- вот эта вся канитель давно отмерла ,все эти тонны конфигов и хмл простыней = прошлый век

Сообщение было отредактировано: 4 ноя 20, 18:53
4 ноя 20, 18:54    [22226363]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4378
Zzz79
а зачем ты ставишь компонент над классом который ты уже записал в бины ,причем с другим названием в контекст

Удаление @Component никак не повлияло, также не работает!
4 ноя 20, 18:59    [22226366]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
Zzz79
Member

Откуда:
Сообщений: 1007
SQL2008
Zzz79
а зачем ты ставишь компонент над классом который ты уже записал в бины ,причем с другим названием в контекст

Удаление @Component никак не повлияло, также не работает!

а что именно не работает?
4 ноя 20, 19:01    [22226369]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4378
Zzz79, не биндится объект, остается NULL
    @Autowired
    ServiceUserDB serviceUserDB;
4 ноя 20, 19:07    [22226372]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
Zzz79
Member

Откуда:
Сообщений: 1007
SQL2008


Все дело в наследовании или в @Controller и @Component?

For all these annotations (stereotypes), technically the core purpose is same. Spring automatically scans and identifies all these classes that are annotated with “ @Component, @Service, @Repository, @Controller” and registers BeanDefinition with ApplicationContext
4 ноя 20, 19:08    [22226373]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4378
Взял пример отсюда
4 ноя 20, 19:10    [22226375]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
Zzz79
Member

Откуда:
Сообщений: 1007
SQL2008,

смотри у тебя этот класс есть
ты из него пытаешься два раза создать бин
так как ты юзаешь тот бин,котоРЫЙ ты проптисал в xml ,соотвествено все работает ,но дебагером в коде ты будешь видеть там нул
а вот убери ты из контекста его и там сразу заработает)
4 ноя 20, 19:26    [22226378]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
Zzz79
Member

Откуда:
Сообщений: 1007
вообще весь код очень странный - если ты юзаешь анотации то и юзай их
если ты юзаешь xml то юзай его
по итогу у тебя каша из бинов ,хотя надо посмотреть все целиком -какой конфиг ты прописал

пс но в общем и целом - это сейчас никто не использует - эти знания = мусор
достаточно понимаания как в контекст попадают бины и как достаются ну и собственно их скоуп
4 ноя 20, 19:29    [22226381]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4378
Zzz79
а вот убери ты из контекста его и там сразу заработает)

Ещё раз для тех кто с бронепоезда - что нужно сделать?
4 ноя 20, 19:42    [22226384]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
Zzz79
Member

Откуда:
Сообщений: 1007
SQL2008
Zzz79
а вот убери ты из контекста его и там сразу заработает)

Ещё раз для тех кто с бронепоезда - что нужно сделать?

либо оствить xml based configuration
либо anotation
что оставишь решать тебе
4 ноя 20, 19:47    [22226390]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4378
Zzz79, почему в другом классе работает?
4 ноя 20, 19:52    [22226395]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
Zzz79
Member

Откуда:
Сообщений: 1007
SQL2008
Zzz79, почему в другом классе работает?

может в контексте прописано- ты пойми так сложно понять почему там нулл
точней так то понятно - не работает @AutoWired
почемУ -вопрос общий слишком- нужно видеть целиком код
4 ноя 20, 19:59    [22226400]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4378
Zzz79, спрошу по другому.
Я правильно понимаю, что @Autowired это типа ссылка (+конструктор) на некий общий объект?
Можно-ли использовать его из разных классов?
4 ноя 20, 20:03    [22226404]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
Zzz79
Member

Откуда:
Сообщений: 1007
SQL2008
Zzz79, спрошу по другому.
Я правильно понимаю, что @Autowired это типа ссылка (+конструктор) на некий общий объект?
Можно-ли использовать его из разных классов?

@Autowried вытаскивает из контекста бин ,который ты создал и кладет его туда куда ты эту анотацию положил- над полем - значит в поле,в контруктор значит в конструктор и тд

в твоем случае у тебя изначально два бина одного класса с разными Id
используется тот ,что ты запихал в хмл
а то что у тебя в коде там прописано спрингу пофиг если не указана анотайшн бейсед конфиг
4 ноя 20, 20:07    [22226406]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4378
Zzz79
в твоем случае у тебя изначально два бина одного класса с разными Id
используется тот ,что ты запихал в хмл
а то что у тебя в коде там прописано спрингу пофиг если не указана анотайшн бейсед конфиг

Это мне нужно осмыслить.
5 ноя 20, 06:39    [22226592]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5596
SQL2008

В application-context.xml
 <bean id="myAuthenticationSuccessHandler"
          class="bla.bla.bla.SecurityHandler" />


Причем все работает, управление после успешной авторизации получает.
Но внутри не могу связать bean


Ну дык правильно!
Вы его в xml-конфиге не заинжектили!

Надо так:

 <bean id="myAuthenticationSuccessHandler"
          class="bla.bla.bla.SecurityHandler" >
        <property name="testBean" value="testBinRef" />
</bean>


P.S.используйте один стиль описания/создания бинов.
Если используете xml-конфиги, то создавайте бины только там, без аннотаций .
Если используете аннотации, то не создавайте бины в xml-конфиге.
В противном случае будете много времени тратить на танцы с бубном вокруг spring-context'а
5 ноя 20, 06:53    [22226593]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4378
mad_nazgul

Надо так:

 <bean id="myAuthenticationSuccessHandler"
          class="bla.bla.bla.SecurityHandler" >
        <property name="testBean" value="testBinRef" />
</bean>


И обратно не понимаю!
Вот весь мой класс
public class SecurityHandler implements AuthenticationSuccessHandler {

    @Autowired
    ServiceUserDB serviceUserDB;

    public void onAuthenticationSuccess(HttpServletRequest request,   HttpServletResponse response, Authentication authentication) throws IOException  {
        Set<String> roles = AuthorityUtils.authorityListToSet(authentication.getAuthorities());
        String email = ((UserDetails)authentication.getPrincipal()).getUsername();
        Session.userDetail = serviceUserDB.gelUserDetail(email);
        response.sendRedirect("index.html");
    }
}


Какое проперти я должен тут устанавливать, если их нет в принципе?
5 ноя 20, 08:22    [22226615]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5596
SQL2008

Какое проперти я должен тут устанавливать, если их нет в принципе?


Как нет?!
А

@Autowired
    ServiceUserDB serviceUserDB;


Это что?

Сейчас у вас в приложении вы создали бин, но свойства в него не заинжектили.

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

Поэтому или штаны оденьте, или крестик снимите.

Т.е. создавайте бины или через xml, или через аннотации.

А так (скорее всего) у вас в контексте два бина.
Первый который создался в xml без инициализированного проперти, а второй, который создался через аннотации с инициализированным проперти.

Причем в "form login" вы используете бин который создали в xml.

Так что либо "не думаете" и инициализируете проперти в xml, либо учите жизненный цикл бинов до полного простветления. :-)
5 ноя 20, 08:38    [22226622]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4378
mad_nazgul, спасибо за потраченное на меня время!
Если смогу чем-то быть полезен, то с радостью помогу.
Теперь по теме
Перевести все в аннотации не получилось, сделал через XML.

Так что либо "не думаете" и инициализируете проперти в xml, либо учите жизненный цикл бинов до полного просветления. :-)

Пока пошел первым способом, но со вторым мне нужно тоже определяться.
Еще раз спасибо!
5 ноя 20, 13:04    [22226835]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
Zzz79
Member

Откуда:
Сообщений: 1007
SQL2008
Zzz79
в твоем случае у тебя изначально два бина одного класса с разными Id
используется тот ,что ты запихал в хмл
а то что у тебя в коде там прописано спрингу пофиг если не указана анотайшн бейсед конфиг

Это мне нужно осмыслить.

ничего сложного
смотри -когда ты пишешь xml спринг его читает и кладет в контекст бин с тем id ,который ты прописал
там же кстати можно заинжектить в этот бин другие бины ,как тебе выше написали
это называется xml based конфигурация

а есть annotation based конфигурация,это когда ты анонтациями указываешь какой бин класть в контекст

сейчас по итогу у тебя в коде кладется бин ,который ты прописал в хмл ,а второй не кладется )

еще раз мой тебе совет - уходи в спринг бут- поверь мне -сейчас джава для джава разработчика жто 1/10 от того что нужно знать
достаточно просто понимаить что под капотом - ты я думаю уже понял- смысла дальше копать нет-двигайся дальше
6 ноя 20, 21:49    [22227794]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 6525
Zzz79,
Сразу на спринг бут нельзя переходить. Это бейсик.
Вы тут с аннотациями сначала закончите.
Чем плохи аннотации?
7 ноя 20, 10:51    [22227903]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5596
PetroNotC Sharp
Zzz79,
Сразу на спринг бут нельзя переходить. Это бейсик.
Вы тут с аннотациями сначала закончите.
Чем плохи аннотации?


Аннотации это хорошо.
Правда когда сделано так:

@Component
public class foo {

   @Autowired
   private Bar bar;

}


Писать простые unit-тесты становиться затруднительно.
Нужно либо мокать через Mockito, либо поднимать контекст.

Ну как бы не удобно.

Если делать инжекцию, через конструктор, там свои неудобства, зато unit-тесты проще писать.

ИМХО самый "идеологически правильный" это конфигурация через классы.

Можно конфигурацию и классы с бизнес логикой разнести по разным модулям.
С конфигурацией через аннотации мы привязываемся к Spring'у.

А через классы или xml, можно конфигурацию и бизнес-логику разнести.
Но xml это дно. Поэтому конфигурационные классы. :-)
8 ноя 20, 19:12    [22228432]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
Zzz79
Member

Откуда:
Сообщений: 1007
mad_nazgul,
мое имхо -юнит тесты это юзлесс куета для того чтобы списать время разраба и чтобы бизнес платил больше вот и все
никакой смысловой и иной нагрузки они не несут ибо пишутся по существующему коду, и могут свалиться если кто то где то забыл что то поменять при изменениях в коде,что собственно и так мгновенно обнаружится при тестировании
соотвственно я считаю это бесполезной тратой денег
Ну и собственно люди которые считают деньги обходятся без этого искуственного г0вна,а гос корпорации там и так все понятно)
Я работал с начала карьеры на гос банк и там без юнит теста твой код даже смотреть никто не будет,а сейчас в частной конторе- зашел а папку тест там 0))ибо нах оно надо )
8 ноя 20, 22:05    [22228460]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
Zzz79
Member

Откуда:
Сообщений: 1007
PetroNotC Sharp
Zzz79,
Сразу на спринг бут нельзя переходить. Это бейсик.
Вы тут с аннотациями сначала закончите.
Чем плохи аннотации?

перехордить нельзя,согласен- но копаться в проблемах @Primary @Qualifired тоже смысла нет
если он починит свой код - это ему не даст ровно никаки бонусов - а из минусов стопорится на том,что должно пролетать мгновенно
все что надо знать по чистому спрингу - что такое контекст,что такое бин,что такое скоуп бина,жизенный цикл и как это все вызывается
тоесть init(),destroy() ,конечно надо посмотреть как в xml создается бин и как туда инжектиться другой бин ,как это сделать разными путями и на этом надо переходить дальше

а автор застрял на фигне- которая нигде не используется давно,а вот весь тот объем технологий при таком подходе никогда не выучить и соотвественно твоя ценность будет равна 0
8 ноя 20, 22:11    [22228462]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
Zzz79
Member

Откуда:
Сообщений: 1007
mad_nazgul


Поэтому конфигурационные классы. :-)

для того чтобы определить бины не нужны никакие конфигурационнные классы- это прошлый век)
8 ноя 20, 22:16    [22228463]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5596
Zzz79
mad_nazgul,
мое имхо -юнит тесты это юзлесс куета для того чтобы списать время разраба и чтобы бизнес платил больше вот и все
никакой смысловой и иной нагрузки они не несут ибо пишутся по существующему коду, и могут свалиться если кто то где то забыл что то поменять при изменениях в коде,что собственно и так мгновенно обнаружится при тестировании
соотвственно я считаю это бесполезной тратой денег
Ну и собственно люди которые считают деньги обходятся без этого искуственного г0вна,а гос корпорации там и так все понятно)
Я работал с начала карьеры на гос банк и там без юнит теста твой код даже смотреть никто не будет,а сейчас в частной конторе- зашел а папку тест там 0))ибо нах оно надо )


"Вы просто не умеете их готовить". ;-)

Вообще приобретать навык написания unit-тестов нужно уже сейчас.
Т.к. с приходом DevOps-практик и прочих аджайлов, всё больше кода будет тестировать приложения.
Т.е. мануального тестирования будет всё меньше и меньше.
И требования к коду будет, чтобы он был тестируемым.

Т.к. любые интеграционные тесты хрупки by default.
То упор таки будет на unit-тесты.
Которые позволяют протестировать хоть что-то, при этом изменения в коде не будут красить все тесты в красное, если не был изменен интерфейс.

И лет через 5-6 код без unit-тестов будет считаться говнокодом.

Так что начать тренироваться надо сейчас.
Чтобы потом на собеседованиях и код-ревью не краснеть.
9 ноя 20, 08:27    [22228539]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5596
Zzz79
mad_nazgul


Поэтому конфигурационные классы. :-)

для того чтобы определить бины не нужны никакие конфигурационнные классы- это прошлый век)


С точностью до наоборот.

Сейчас "генеральная линия партии" в Spring это конфигурационные файлы.
Аннотации, как и xml оставлены для совместимости.

Сейчас даже контроллеры (@Conroller, @restController) рекомендуют описывать в конфигурационных файлах в виде бина.

На Java это не так сильно акцентрованно. А вот примерах на Kotlin очень даже.

Уже до тестов добрались.
9 ноя 20, 08:31    [22228541]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 6525
mad_nazgul
И лет через 5-6 код без unit-тестов будет считаться говнокодом.
угу. Уже 20 лет тесты не приоритет и ничего.
9 ноя 20, 08:58    [22228547]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 6525
mad_nazgul
@restController) рекомендуют описывать в конфигурационных файлах в виде бина.
пример дайте
9 ноя 20, 08:59    [22228548]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
Zzz79
Member

Откуда:
Сообщений: 1007
mad_nazgul
Zzz79
пропущено...

для того чтобы определить бины не нужны никакие конфигурационнные классы- это прошлый век)


С точностью до наоборот.

Сейчас "генеральная линия партии" в Spring это конфигурационные файлы.
Аннотации, как и xml оставлены для совместимости.

Сейчас даже контроллеры (@Conroller, @restController) рекомендуют описывать в конфигурационных файлах в виде бина.

На Java это не так сильно акцентрованно. А вот примерах на Kotlin очень даже.

Уже до тестов добрались.

не знаю как в котлинах,на джава это анахронизм
тесты это хорошо,когда больше делать нечего- ну чтобы работники не просто так зп получали,другого смысла они не несут от слова вообще.Вот интеграционные худо бедно хоть что то показывают,хотя опять же это все синтетика.
9 ноя 20, 12:02    [22228644]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5596
PetroNotC Sharp
mad_nazgul
@restController) рекомендуют описывать в конфигурационных файлах в виде бина.
пример дайте


Пример :-)
9 ноя 20, 13:28    [22228717]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5596
PetroNotC Sharp
mad_nazgul
И лет через 5-6 код без unit-тестов будет считаться говнокодом.
угу. Уже 20 лет тесты не приоритет и ничего.


Ну больше 20 лет микросервисная архитектура была не в приоритете.
Однако сейчас всё немного по другому.

Как бы распространение микросеврисно архитектуры и практик DevOps, приведет к повальному внедрению unit-тестов.
Просто если без них, то "фигак-фигак и в продакшен не получится". :-)
9 ноя 20, 13:31    [22228718]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5596
Zzz79

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


То же самое можно сказать про любую новую технологию программирования.
Я ещё застал холивары ООП vs ПП.
Как говориться "рыночек порешал".
ООП сейчас везде.

Так же и с unit-тестированием.
Рынок решит.
Что дешевле лежащий прод и/или потеря всех данных.
Или затраченное время программистов на написание unit-тестов.

<:o)
9 ноя 20, 13:39    [22228728]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 6525
mad_nazgul,
Я не просил пример с реактом.
Микросервисы тут делают 1,5 чела. И будут делать столько же.
Все топики проблемные без решения и в конце авторы исчезают)))) LOL
9 ноя 20, 13:42    [22228730]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5596
PetroNotC Sharp
mad_nazgul,
Я не просил пример с реактом.


Я говорил, про "генеральную линию партии".
А сейчас она как раз направленна на реактивность во все дыры.

Если сейчас почитать документацию Spring, там до сих пор про xml-конфиги пишут.
Это не значит, что xml-конфиги как-то развиваются и продвигаются.
Это легаси, которое поддерживают.

PetroNotC Sharp

Микросервисы тут делают 1,5 чела. И будут делать столько же.
Все топики проблемные без решения и в конце авторы исчезают)))) LOL


Так правильно, сложность микросеврисов она на абстракцию повыше.
Т.е. сложность не написать, а спроектировать доменную модель.
Этим занимаются от уровня сеньер и выше.

А тут вопросы больше "технические".
10 ноя 20, 06:41    [22229284]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 6525
mad_nazgul
А сейчас она как раз направленна на реактивность во все дыры.
бла бла бла. Сетевой маркетинг.
Ты одиночка в микросервисах и в реактивности.
Спрашиваешь про одно а ты впариваешь другое.
10 ноя 20, 09:06    [22229306]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5596
PetroNotC Sharp
mad_nazgul
А сейчас она как раз направленна на реактивность во все дыры.
бла бла бла. Сетевой маркетинг.
Ты одиночка в микросервисах и в реактивности.
Спрашиваешь про одно а ты впариваешь другое.


Да и что я спрашивал? :-)
10 ноя 20, 12:27    [22229445]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 6525
mad_nazgul,
Ты сказал что конфигурирование java лучше БЕССПОРНО конфигурированием аннотациями.
Я сказал докажи.
Не люблю максималистов. Меня аннотации устраивают.
10 ноя 20, 12:37    [22229452]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5596
PetroNotC Sharp
mad_nazgul,
Ты сказал что конфигурирование java лучше БЕССПОРНО конфигурированием аннотациями.
Я сказал докажи.
Не люблю максималистов. Меня аннотации устраивают.


Я сказал не "бесспорно правильно", а "идеологически правильно".

Как бы реальность и идеология немного разные вещи. ;-)

И всё ещё жду конкретно что я спрашивал. :-)
11 ноя 20, 06:31    [22229928]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 6525
mad_nazgul,
Ты бы хоть вики открыл прежде чем спорить
автор
Идеология — не наука, хотя она может опираться на научные знания. В отличие от науки идеология, как выражение частных интересов в форме всеобщности, представляет собой знание о социально-политической жизни по отношению к интересам составляющих её сил, задавая на этой основе оценку желательности или нежелательности того или иного социального бытия[1].

Теперь понятно почему ты фанат микросервисов.
11 ноя 20, 07:18    [22229931]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 6525
mad_nazgul
И всё ещё жду конкретно что я спрашивал. :-)
у иделогов парторгов в профиле ни одного вопроса. Они расстреливают не сомневаясь в идеологически правильной линии партии.
11 ноя 20, 07:21    [22229932]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4378
Подолью маслица в огонь...
Одно из достоинств XML-конфигурации это то, что параметры можно спокойно поменять после компиляции программы. Например настройки почтового сервера или подключения к базе.
В случае же Java-конфигурации после изменения приходится перекомпилировать проект, ибо все захардкожено.
Или я не прав?
11 ноя 20, 11:15    [22230003]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 6525
SQL2008,
Прав.
Но минус что портянки большие.
И мне удобнее связь классов сразу смотреть. В коде.
Мы же не конфигурасты 1С.
Поэтому в цепочке
XML - > Аннотации - > Java config
Я посередине))
11 ноя 20, 11:28    [22230012]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 6525
SQL2008
маслица в огонь...
огонь бывает когда максималисты приходят. Я не.
11 ноя 20, 11:30    [22230013]     Ответить | Цитировать Сообщить модератору
 Re: Autowired bean is null  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3778
SQL2008

Одно из достоинств XML-конфигурации это то, что параметры можно спокойно поменять после компиляции программы. Например настройки почтового сервера или подключения к базе.
В случае же Java-конфигурации после изменения приходится перекомпилировать проект, ибо все захардкожено.
Или я не прав?

То что там якобы тренд писать конфигурации на жаве - оно скорее всего подразумевало либо бут, либо IaC. В чем там идеология заключается нихрена непонятно, т.е. если взять тот же бут и внимательно на него посмотреть, то невооруженным взглядом будет заметно, что на более-менее развесистые конфигурации он совершенно не заточен: ну вот если вам внезапно понадобилось сконфигурировать в приложении несколько JPA-провайдеров (две кафки, две монги, чего угодно две), то с евойным стартерами придется обломаться, а придется делать одно из:
- писать свой стартер (но мы то все знаем какой треш и угар в спринговых конфигурациях творится)
- забить на стартер и хардкодить в жаве названия пропертей (приложение же должно в разных средах запускаться)
- взять старый добрый xml и с первого раза сделать все по-человечески
11 ноя 20, 23:23    [22230492]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2 3      [все]
Все форумы / Java Ответить