powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Начал знакомство со spring. Поругайте код
75 сообщений из 75, показаны все 3 страниц
Начал знакомство со spring. Поругайте код
    #39962123
bobo96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте! Если кого не затруднит, поругайте код! Только начал знакомиться с фраймворком, хотелось бы сразу на берегу понимать, если что-то делаю не так. Пока что просто поднял сервер и настроил выборку из БД.
https://github.com/bobo766/spring
Далее хочу прикрутить авторизацию и снова приду с тем же вопросом)))
Заранее благодарю всех неравнодушных!!
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39962163
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bobo96,

Типичный helloworld с curd и имена пакетов сраным транслитом.
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39962188
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bobo96,
Думаешь все тут скачивают что то себе на комп чтобы ругать или смотреть?
Из 100 один скачивает но не ругает. Один ругает. И один не скачивает, а ругает если дают на блюдечке и с тегом src
)))
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39962249
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bobo96,

Зачем так сложно?!

Т.е. BaseResponse как бы не особо нужен.
ИМХО ошибки и Http коды пока лучше доверит Spring Framework

И если делаете "простой CRUD", то может сразу будете использовать Sprin Data REST ?!
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39962360
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код конечно печальный))
в репе почему <User,Integer>
почему findById принимает long а в дто поле Long

Далее метод findById вообще не нужен он и так есть по дефолту
далее ты используешь интрефейс репы вместо ее имплементации-
тоесть тебе нужен сервис слой которой имплементирует этот интерфейс
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39962362
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тоесть у тебя даже есть такой сервис класс - но ты его не используешь
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39962376
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
@Transactional на findById)

судя по классу CustomUserDetailsService

ты слабо понимаешь ООП механику ,тоесть ты зачем то используешь ЮзерРепу в этом классе,при этом ты наследуешься от этого класса где этот метод переопределен
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39962381
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Советую отложить пока spring
в нем ничего сложного нет
а вот основы ООП нужно подятнуть,так как на лицо полное непонимание механики интерфейсов- а это как бы суть Spring
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39962399
dakeiras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79
Код конечно печальный))
в репе почему <User,Integer>
почему findById принимает long а в дто поле Long

Далее метод findById вообще не нужен он и так есть по дефолту
далее ты используешь интрефейс репы вместо ее имплементации-
тоесть тебе нужен сервис слой которой имплементирует этот интерфейс


Кстати, как лучше, а то я изучал это лет 15 назад и уже не помню.
Примитив или обёртка?
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39962406
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dakeiras
asv79
Код конечно печальный))
в репе почему <User,Integer>
почему findById принимает long а в дто поле Long

Далее метод findById вообще не нужен он и так есть по дефолту
далее ты используешь интрефейс репы вместо ее имплементации-
тоесть тебе нужен сервис слой которой имплементирует этот интерфейс


Кстати, как лучше, а то я изучал это лет 15 назад и уже не помню.
Примитив или обёртка?


Там должен быть Long ,вроде потому что long не может быть null
я просто помню что у меня изза этого проект какой то сломался
тоесть в качестве id примитив нельзя
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39962411
dakeiras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79
dakeiras
пропущено...


Кстати, как лучше, а то я изучал это лет 15 назад и уже не помню.
Примитив или обёртка?


Там должен быть Long ,вроде потому что long не может быть null
я просто помню что у меня изза этого проект какой то сломался
тоесть в качестве id примитив нельзя

спс, хорошо что я обычно обёртку использую.
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39962426
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dakeiras,

обертка почти всегда лучше чем примитив,а на реальных проектах мы все заворачиваем в Optional)
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39962449
bobo96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
То, что код печальный, это я сам понимаю))
Причесывать буду, не вопрос.
В целом скажите, сама суть авторизации basic + token хоть верно сделана ?))) Если честно, некоторые моменты пока не до конца понятны...

asv79

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

Тут не понял, о чем речь :( Можно более простым языком, для таких, как я ?)
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39962460
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bobo96

Тут не понял, о чем речь :( Можно более простым языком, для таких, как я ?)

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

если говорить относительно представленнного кода там должны быть слои
DAO,SERVICE,CONTROLLER

попутно есть классы по работе с репозиторием- обычно это интерфейсы,которые нужно имплементировать

тоесть дао слой это интрерфейс

сервис это логика
котнроллер дергает сервис

в представленном коде есть все но используется неправильно и написано неправильно
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39962476
bobo96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Странно, вроде делал по офф докам.. Не все конечно, но большинство.
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39962478
dakeiras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79
dakeiras,

обертка почти всегда лучше чем примитив,а на реальных проектах мы все заворачиваем в Optional)

Optional крутая тема, особенно Optional.ofNullable(foo).isPresent().
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39962482
bobo96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asv79, не покажешь на каком-нибудь небольшом примере, что именно у меня не так и как надо правильно ?
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39962523
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dakeiras
asv79
dakeiras,

обертка почти всегда лучше чем примитив,а на реальных проектах мы все заворачиваем в Optional)

Optional крутая тема, особенно Optional.ofNullable(foo).isPresent().

вообще это используется немного не так)
а через map
сейчас показать не могу ,но если надо напиши на почту покажу пример
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39962530
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bobo96
asv79, не покажешь на каком-нибудь небольшом примере, что именно у меня не так и как надо правильно ?

к сожалению все что я пишу в последнее время является коммерческой собственностью и публичных репозиториев у меня нет

но если очень хочется пиши мне на почту я могу провести некий мастер класс с примерами через тимс
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39962544
bobo96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asv79, спасибо, если не шутишь о_О Меня в любом случае твои готовые продукты не интересуют в том плане, что вряд ли я там что-то пойму))) Примеров типа хеллоу ворлд будет достаточно. На почту завтра отпишу.
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39962643
Фотография Valentin Kolesnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можете посмотреть мой репозиторий.

Java 14, spring boot 2.3.0, flyway, JavaScript.

https://github.com/javadev/pt-backend

Хорошего вам дня!
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39962649
bobo96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Valentin Kolesnikov, спасибо!
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39962826
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bobo96
asv79, спасибо, если не шутишь о_О Меня в любом случае твои готовые продукты не интересуют в том плане, что вряд ли я там что-то пойму))) Примеров типа хеллоу ворлд будет достаточно. На почту завтра отпишу.


Для вас уже специально все сделали.
Вот

<:o)
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39962845
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это ... прекрасно.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
@Getter
@Setter
@Entity
@Table (name = "goal_parameter", schema = "ptcore")
@DynamicInsert
public class GoalParameter {
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39962866
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Это ... прекрасно.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
@Getter
@Setter
@Entity
@Table (name = "goal_parameter", schema = "ptcore")
@DynamicInsert
public class GoalParameter {



Больше половины аннотаций это lombok.
Который можно заменить на Kotlin :-)
Ну или Java 14.
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39962886
dakeiras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul
mayton
Это ... прекрасно.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
@Getter
@Setter
@Entity
@Table (name = "goal_parameter", schema = "ptcore")
@DynamicInsert
public class GoalParameter {



Больше половины аннотаций это lombok.
Который можно заменить на Kotlin :-)
Ну или Java 14.


А лучшу на Груви.

И добавить @ToString, @Slf4j и @BlackBox.
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39962916
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В неком гипотетическом будущем.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
@If("Java")
 @AllArgsConstructor
 @NoArgsConstructor
 @Accessors(chain = true)
 @Getter
 @Setter
@Else // Kotlin
 @Nothing
@EndIf
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39962963
bobo96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mad_nazgul

Для вас уже специально все сделали.

Видел :) Многое оттуда узнал :) Но вопросы там задать некому :(
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39963147
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
В неком гипотетическом будущем.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
@If("Java")
 @AllArgsConstructor
 @NoArgsConstructor
 @Accessors(chain = true)
 @Getter
 @Setter
@Else // Kotlin
 @Nothing
@EndIf



Э-э-э зачем?!

Когда есть "Ctrl+Alt+Shift+K" ! ;-)
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39963150
Фотография Valentin Kolesnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
В неком гипотетическом будущем.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
@If("Java")
 @AllArgsConstructor
 @NoArgsConstructor
 @Accessors(chain = true)
 @Getter
 @Setter
@Else // Kotlin
 @Nothing
@EndIf



@Accessors(chain = true) вроде бы нет в котлине.

Хорошего вам дня.
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39963180
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul,
С геттерами тоже были горячие клавиши. Однако все хотят вообще не писать
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39963185
bobo96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Появились вопросы, надеюсь сообщество поможет..
Не понимаю тему про роли. В БД прописал для каждого пользователя типа уровень доступа, сейчас 2: Admin и User.
Классы:


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
@Entity
@Table(name="users")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    @NotBlank
    @Email
    private String login;

    @NotBlank
    private String password;

    @NotBlank
    @Column(name = "name")
    private String username;

    @JsonIgnore
    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "id_role", referencedColumnName = "id")
    private Role roles;

    public User() {
    }
    
    public User(int id, String name, String login, String password, Role role) {
        this.id = id;
        this.username = name;
        this.login = login;
        this.password = password;
        this.roles = role;
    }


    public int getId() {
        return id;
    }

    public String getUsername() {
        return username;
    }

    public String getLogin() {
        return login;
    }

    public String getPassword() {
        return password;
    }

    public Role getRoles() {
        return roles;
    }

}



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
@Entity
@Table(name="roles")
public class Role
        implements GrantedAuthority {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    @NotBlank
    private String role;

    @OneToMany(mappedBy = "roles")
    private Collection<User> users;

    public int getId() {
        return id;
    }

    public Collection<User> getUsers() {
        return users;
    }

    @Override
    public String getAuthority() {
        return role;
    }
}



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
public class CustomUserDetails
        implements UserDetails {

    private final int id;

    private final String name;

    private final String username;

    private final String email;

    private final String password;

    private final Collection<? extends GrantedAuthority> authorities;

    private CustomUserDetails(int id, String name, String login, String password,
                              Collection<? extends GrantedAuthority> authorities) {
        this.id = id;
        this.name = name;
        this.username = null;
        this.email = login;
        this.password = password;
        this.authorities = authorities;
    }

    public static CustomUserDetails create(User user) {
        List<GrantedAuthority> authorities = Collections.singletonList(
                new SimpleGrantedAuthority((user.getRoles()).getAuthority()));

        return new CustomUserDetails(
                user.getId(),
                user.getUsername(),
                user.getLogin(),
                user.getPassword(),
                authorities
        );
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public String getEmail() {
        return email;
    }

    @Override
    public String getUsername() {
        return username;
    }

    @Override
    public String getPassword() {
        return password;
    }

    @Override
    public Collection<? extends GrantedAuthority> getAuthorities() {
        return authorities;
    }

    @Override
    public boolean isAccountNonExpired() {
        return true;
    }

    @Override
    public boolean isAccountNonLocked() {
        return true;
    }

    @Override
    public boolean isCredentialsNonExpired() {
        return true;
    }

    @Override
    public boolean isEnabled() {
        return true;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        CustomUserDetails that = (CustomUserDetails) o;
        return Objects.equals(id, that.id);
    }

    @Override
    public int hashCode() {

        return Objects.hash(id);
    }
}



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
@Service
public class CustomUserDetailsService
        implements UserDetailsService {

    final UserRepository userRepository;

    private static final Logger logger = LoggerFactory.getLogger(CustomUserDetailsService.class);

    public CustomUserDetailsService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    @Override
    @Transactional
    public UserDetails loadUserByUsername(String login)
            throws UsernameNotFoundException {

        User user = userRepository.findByLogin(login);

        if(user == null) {
            logger.error("User not found with email {}", login);
            throw new UsernameNotFoundException("User not found with login: " + login);
        }

        return CustomUserDetails.create(user);
    }

    @Transactional
    public UserDetails loadUserById(int id) {
        User user = userRepository.findById(id);

        if(user == null) {
            logger.error("User not found with id {}", id);
            throw new UsernameNotFoundException("User not found with id: " + id);
        }

        return CustomUserDetails.create(user);
    }
}



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
@RestController
@RequestMapping("/api")
public class UserController {

    final UserRepository mUserRepository;

    final CustomUserDetailsService mCustomUserDetailsService;

    public UserController(UserRepository mUserRepository, CustomUserDetailsService customUserDetailsService) {
        this.mUserRepository = mUserRepository;
        this.mCustomUserDetailsService = customUserDetailsService;
    }

    @GetMapping("/user/{id}")
    public BaseResponse<?> getUserName(@PathVariable int id) {
        User user = mUserRepository.findById(id);

        if(user != null) {

            Authentication auth = SecurityContextHolder.getContext().getAuthentication();

            for(GrantedAuthority role : auth.getAuthorities()) {
                System.out.println(role.getAuthority()); // ЗДЕСЬ ВСЕ ОК, ВЫЛАЗИТ ТА РОЛЬ, ЧТО В БД
            }

            return new BaseResponse<>(HttpStatus.OK, null, user);
        }

        return new BaseResponse<>(HttpStatus.NOT_FOUND, null, "User not found");
    }

}




В классе UserController специально тащу роль, вроде все ок, пишет Admin. При этом, если в конфиге безопасности написать
Код: java
1.
.authorizeRequests().antMatchers("/api/**").hasRole("Admin")


то вылазит 403я ошибка.
Что я делаю не так ?
Конфиг:


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(
        securedEnabled = true,
        jsr250Enabled = true,
        prePostEnabled = true
)
public class SecurityConfig
        extends WebSecurityConfigurerAdapter {

    private final JwtAuthenticationEntryPoint authenticationEntryPoint;
    final CustomUserDetailsService customUserDetailsService;

    @Bean
    public JwtAuthenticationFilter jwtAuthenticationFilter() {
        return new JwtAuthenticationFilter();
    }

    @Bean(BeanIds.AUTHENTICATION_MANAGER)
    @Override
    public AuthenticationManager authenticationManagerBean() throws Exception {
        return super.authenticationManagerBean();
    }

    public SecurityConfig(JwtAuthenticationEntryPoint authenticationEntryPoint,
                          CustomUserDetailsService customUserDetailsService) {
        this.authenticationEntryPoint = authenticationEntryPoint;
        this.customUserDetailsService = customUserDetailsService;
    }

    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }

    @Override
    public void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth
                .userDetailsService(customUserDetailsService)
                .passwordEncoder(passwordEncoder());
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .cors()
                .and()
                .csrf().disable()
                .exceptionHandling()
                .authenticationEntryPoint(authenticationEntryPoint)
                .and()
                .sessionManagement()
                .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
                .and()
                .authorizeRequests().antMatchers("/auth/**").permitAll()
                .and()
                .authorizeRequests().antMatchers("/api/**").hasRole("Admin")
                .anyRequest().authenticated()
                .and()
                .addFilterBefore(jwtAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class);

    }
}




На гитхабе код обновил. Заранее благодарю!
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39963198
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valentin Kolesnikov
mayton
В неком гипотетическом будущем.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
@If("Java")
 @AllArgsConstructor
 @NoArgsConstructor
 @Accessors(chain = true)
 @Getter
 @Setter
@Else // Kotlin
 @Nothing
@EndIf



@Accessors(chain = true) вроде бы нет в котлине.

Хорошего вам дня.

Это шутка была. Я просто жду когда кто-то сделает аннотации императивным над-языком.
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39963210
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Вангую 4-5 лет
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39963230
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может кто-то в гитхабе уже начал такой безумный проект.

P.S. Видя такое мета-программирование Джон-Маккарти умер-бы второй раз если-бы был жив.
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39963269
dakeiras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Может кто-то в гитхабе уже начал такой безумный проект.

P.S. Видя такое мета-программирование Джон-Маккарти умер-бы второй раз если-бы был жив.

Это не мета-программирование. Это обычное декларативное программирование.
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39963282
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я-же к этому и подвожу. К тому что мы не можем говорить просто о декларативности когда у нас несколько
независимых процессоров аннотаций. У нас появляется ПОРЯДОК их процессинга.

И да. Вы правы. Это уже не декларативность. И здесь углубление этой идеи - это могила. Мы - копаем себе могилу.
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39963292
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Я-же к этому и подвожу. К тому что мы не можем говорить просто о декларативности когда у нас несколько
независимых процессоров аннотаций. У нас появляется ПОРЯДОК их процессинга.

И да. Вы правы. Это уже не декларативность. И здесь углубление этой идеи - это могила. Мы - копаем себе могилу.

Порядок процессинга не самая большая проблема тут. Со всеми этими аннотациями Java из строго-типизированного языка превращается по факту в хер пойми кем исполняемый хер знает какой код. Ну и все прелести дебага
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39963295
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник
Порядок процессинга не самая большая проблема тут. Со всеми этими аннотациями Java из строго-типизированного языка превращается по факту в хер пойми кем исполняемый хер знает какой код. Ну и все прелести дебага


Вот да. Я тоже про это подумал, прикинул, что терять всё равно нечего и перелез кодить на ноду.
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39963362
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
mad_nazgul,
С геттерами тоже были горячие клавиши. Однако все хотят вообще не писать


Почему были? Есть!
Регулярно ими пользуюсь. :-)

Но иногда так хочется нажать "Ctrl+Alt+Shift+K" :-)
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39963369
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Я-же к этому и подвожу. К тому что мы не можем говорить просто о декларативности когда у нас несколько
независимых процессоров аннотаций. У нас появляется ПОРЯДОК их процессинга.

И да. Вы правы. Это уже не декларативность. И здесь углубление этой идеи - это могила. Мы - копаем себе могилу.


Поэтому я сейчас лично топлю в проектах в которых я работаю, чтобы все аннотации Spring'а не вылезали дальше конфигурационных файлов, ну может быть контроллерах.
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39963429
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да. А тот % вреда который превносит Lombok превышает полезный эффект. Зло в моем понимании
это сужение скоупа применения. Если раньше вы писали Java-код то теперь вы пишете Spring/Lombok
код. И этот код уже не может быть повторно переиспользован в других проектах. Он - прибит гвоздями
к этой технологии и к этому фреймворку и к этому сету процессорова аннтоаций.

А в вопросах DTO/Pojo это важно. Они должны быть кандидатами на повторное использование. И без
всякой ненужной шелухи.
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39963449
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Да. А тот % вреда который превносит Lombok превышает полезный эффект. Зло в моем понимании
это сужение скоупа применения. Если раньше вы писали Java-код то теперь вы пишете Spring/Lombok
код. И этот код уже не может быть повторно переиспользован в других проектах. Он - прибит гвоздями
к этой технологии и к этому фреймворку и к этому сету процессорова аннтоаций.

А в вопросах DTO/Pojo это важно. Они должны быть кандидатами на повторное использование. И без
всякой ненужной шелухи.

Тут абсолютно не согласен. Все аннотации ломбока - compile-time. И если что не так - получи ошибку компиляции. В отличие от всяких спринговых аннотаций - которые рантайм. Ничего плохого в ломбоке не вижу
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39963466
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dakeiras
mayton
Может кто-то в гитхабе уже начал такой безумный проект.

P.S. Видя такое мета-программирование Джон-Маккарти умер-бы второй раз если-бы был жив.

Это не мета-программирование. Это обычное декларативное программирование.
имхо
Декларативное и есть мета.
Так как вы пишите декларативные значки-код над другим кодом.
А код над кодом это мета...
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39963472
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мы где-то обсуждали maven pom.xml.

И вроде как решили что декларативное - но фиксирующее порядок следования утверждений.
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39963504
bobo96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пацаны, я вам тут не мешаю ?)
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39963543
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zzz79
mayton
Мы где-то обсуждали maven pom.xml.

И вроде как решили что декларативное - но фиксирующее порядок следования утверждений.

мавен - для каких то инди проектов)

что то более менее серьезное требует самописных тасок - тобишь gradle

Я бы рассуждал иначе. Когда тебе надо быстро понять как происходит билд проекта - то здесь
мавен - строг и очевиден. Gradle нежуя не очевиден. Потому что он - не конфиг а микро-код
для сборки. Который писал какой-то программист. И поэтому когда ты трабл-шутишь сломанную
сборку на gradle (а такое часто бывает) - то ты должен делать РЕВЕРС инжинеринг программы
билда. И понять что имел в виду тот китаец или индус когда втащил в проект микро-программу
сборки.

Тоесть градл - это не вершина эволюции сборщиков. Это скорее просто некий форк. Или спин-офф.
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39963555
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по этой же причине мне не зашел sbt
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39963856
Фотография Valentin Kolesnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Spring-boot приложение от немецких чиновников.

Удивил checkstyle, code civerage и sonar cloud.

https://github.com/corona-warn-app/cwa-server

Хорошего вам дня!
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39963998
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zzz79
mayton
Мы где-то обсуждали maven pom.xml.

И вроде как решили что декларативное - но фиксирующее порядок следования утверждений.

мавен - для каких то инди проектов)

что то более менее серьезное требует самописных тасок - тобишь gradle


Maven это как строгая типизация.
Кому то мешает, кому то помогает.
В т.ч. и в серьёзных проектах.

Мне например удобнее работать с maven. Т.к. знаешь что где лежит, и как будет собираться.
А с gradle можно навернуть все что угодно.

Но надо будет к gradle присмотреться, т.к. он на kotlin переходит. :-)
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39964015
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valentin Kolesnikov
Spring-boot приложение от немецких чиновников.

Удивил checkstyle, code civerage и sonar cloud.

https://github.com/corona-warn-app/cwa-server

Хорошего вам дня!

Да все там в порядке. Просто Сонар посчитал слабое тестовое покрытие.
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39964216
dakeiras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в 2020 да и в последние года 3-4 уже смешно видеть чистый pom.xml.

Каменный век.

Я согласен что у Грэдла есть недостатки (даже я бы сказал он не очень качественно сделан в плане работы с ним), но по функционалу альтернатив нет.
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39964224
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dakeiras
в 2020 да и в последние года 3-4 уже смешно видеть чистый pom.xml.

Каменный век.

Я согласен что у Грэдла есть недостатки (даже я бы сказал он не очень качественно сделан в плане работы с ним), но по функционалу альтернатив нет.

Сильно удивишся но есть Java-проекты которые ant-ом собирают.
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39964227
dakeiras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
dakeiras
в 2020 да и в последние года 3-4 уже смешно видеть чистый pom.xml.

Каменный век.

Я согласен что у Грэдла есть недостатки (даже я бы сказал он не очень качественно сделан в плане работы с ним), но по функционалу альтернатив нет.

Сильно удивишся но есть Java-проекты которые ant-ом собирают.


Я недавно скачал нетбинс, так он предлагал собирать каким-то своим сборщиком.
Да таже Идея только пару лет назад наконец осознала смерть iml.
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39964422
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот. Одна из лучших библиотек для построения текстовых индексов по документам.
Где только не используется. И в Elastic-Search. И в различных коробочных веб-приложениях.

https://github.com/apache/lucene-solr

Собирается ant-ом.
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39964426
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но наверное было-бы некрасиво просто поругать gradle. Надо и похвалить.
Так вот. Он быстро собирает. За счет запуска (в среднем) 4х демонов сборщиков.
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39964569
dakeiras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Но наверное было-бы некрасиво просто поругать gradle. Надо и похвалить.
Так вот. Он быстро собирает. За счет запуска (в среднем) 4х демонов сборщиков.

это под 1 проект? А зачем 4 демона под сборку 1 проекта?
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39964571
Фотография Valentin Kolesnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dakeiras,

В maven тоже есть распараллеливание.

Команда mvn -T 1C -B clean package

Хорошего вам дня!
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39964579
dakeiras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valentin Kolesnikov
dakeiras,

В maven тоже есть распараллеливание.

Команда mvn -T 1C -B clean package

Хорошего вам дня!


Так я и спрашиваю - зачем? Что конкретно оно распараллеливает?
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39964584
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dakeiras
в 2020 да и в последние года 3-4 уже смешно видеть чистый pom.xml.

Каменный век.

Я согласен что у Грэдла есть недостатки (даже я бы сказал он не очень качественно сделан в плане работы с ним), но по функционалу альтернатив нет.
Если maven - это каменный век, то gradle - это леденящий душу пи####, он условно "прост" ровно до того момента, как приходится делать что-то сложное, после чего все его косяки вылезают наружу.
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39964586
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dakeiras
mayton
Но наверное было-бы некрасиво просто поругать gradle. Надо и похвалить.
Так вот. Он быстро собирает. За счет запуска (в среднем) 4х демонов сборщиков.

это под 1 проект? А зачем 4 демона под сборку 1 проекта?

Ну.... если процесс компилляции можно разбить на изолированные фазы (возможно modules)
то эти фазы могут исполняться на отдельных java-процессах-демонах).

Конфигурируется это где-то здесь.

Код: java
1.
/.gradle/gradle.properties



Или можно просто в свойствах проекта. Кажется. Не уверен. Вобщем сами проверье.

У меня обычно поднят 1 этот демон сразу после любого вызова gradle build. И потом все время висит.

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

Вообще тут надо бенчмаркать. Запустить компилляцию крупного проекта и посмотреть как оказывает
влияние.

Вот как выглядит список процессов во время компилляции Кафки у меня. Видно что 5 os processes чем-то заняты.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
mayton@ryzen-ssd:~$ jps -l
11026 worker.org.gradle.process.internal.worker.GradleWorkerMain
10964 worker.org.gradle.process.internal.worker.GradleWorkerMain
10932 worker.org.gradle.process.internal.worker.GradleWorkerMain
10068 worker.org.gradle.process.internal.worker.GradleWorkerMain
13017 jdk.jcmd/sun.tools.jps.Jps
8731 org.gradle.launcher.daemon.bootstrap.GradleDaemon
8699 org.gradle.launcher.GradleMain
10317 worker.org.gradle.process.internal.worker.GradleWorkerMain



И вот мой конфиг.
Код: java
1.
2.
3.
mayton@ryzen-ssd:~$ cat ~/.gradle/gradle.properties 
org.gradle.daemon=true
org.gradle.parallel=true



На Windows10 машине я однако эту конфигурацию выключал.
Код: java
1.
org.gradle.daemon=false


Т.к. были странные артефакты. После подвисания какого-то gradle-plugin
часть файлов в директории /build проекта оказывались заблокированными
и следующий clear не проходил успешно. И поскольку мне важна была не скорость
а скорее надежность автоматизации я демонов в Windows-10 всегда выключал.
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39964588
dakeiras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот и я говорю, не нужно это распараллеливание. По крайней мере на машинах разработчиков. Только оперативу отжирает. (это одна из раздражающих черт gradle - висячие демоны даже когда ничего не компилируется).
На CI может и нужно.
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39964590
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну.. если у тебя очень сильная и долгоиграющая система модульных и интеграционных тестов
то сам бох велел тебе включать параллелизм.

Насчет там память отжирает? Ну не знаю. Мы живем уже в 21 веке и кажется уже на все дев-станции ставят по 8-16 Гигабайт
памяти и глупо тебе этот ресурс не задействовать. Или тебе память зачем-то другим нужна?

В "Контру" шпилишся? Или в танки параллельно?
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39964598
dakeiras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Ну.. если у тебя очень сильная и долгоиграющая система модульных и интеграционных тестов
то сам бох велел тебе включать параллелизм.

Насчет там память отжирает? Ну не знаю. Мы живем уже в 21 веке и кажется уже на все дев-станции ставят по 8-16 Гигабайт
памяти и глупо тебе этот ресурс не задействовать. Или тебе память зачем-то другим нужна?

В "Контру" шпилишся? Или в танки параллельно?

а, понял насчёт тестов. Тогда понятно согласен, но Гредл мог бы всё равно сделать чтобы эти демоны не висели.
8 это нереально сейчас, 16 маловато, 32 стандарт сейчас для разработчиков должен быть.
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39964629
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Ну.. если у тебя очень сильная и долгоиграющая система модульных и интеграционных тестов
то сам бох велел тебе включать параллелизм.
в "сильной и долгоиграющей системе модульных и интеграционных тестов" помимо того, что появляются зависимости между тестами, что в свою очередь сводит на нет все попытки что-то распараллелить автоматически, так еще и длительность тестовых сценариев разнится от сценария к сценарию, что тоже мешает их параллелить оптимально - приходится делать все руками, поэтому какие-либо возможности системы сборки тут совершенно не в кассу.
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39964632
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dakeiras

а, понял насчёт тестов. Тогда понятно согласен, но Гредл мог бы всё равно сделать чтобы эти демоны не висели.

Я же объяснил зачем они висят. Для быстрого старта компилляции. Даже на малых проектах это может быть полезно.

Проблема Windows-10 это особенность файловой системы. Файловые дескрипторы - блокируются. В Linux - нет.
Линукс позволяет удалить символическое имя при том что дескриптор открыт и используется.

Поэтому не нужно переносить этот артефакт как недостаток gradle, тем более что если у вас нормальный
CI - проесс - то на сереверах непрерывной интеграции у вас будет стоять Linux.
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39964636
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов
mayton
Ну.. если у тебя очень сильная и долгоиграющая система модульных и интеграционных тестов
то сам бох велел тебе включать параллелизм.
в "сильной и долгоиграющей системе модульных и интеграционных тестов" помимо того, что появляются зависимости между тестами, что в свою очередь сводит на нет все попытки что-то распараллелить автоматически, так еще и длительность тестовых сценариев разнится от сценария к сценарию, что тоже мешает их параллелить оптимально - приходится делать все руками, поэтому какие-либо возможности системы сборки тут совершенно не в кассу.

Я считаю что зависимости между тестами - это зло. И их надо устранять. Хотя конечно для e2e тестов
у вас будет некий flow иммитирующий реальную работу вашей системы и здесь уже низкая скорость
тестинга - это не НЕДОСТАТОК gradle там или jupiter. Это именно недостаток вашей разрабатываемой
системы. Она - медленно процессит (к примеру) JMS сообщения. И соотв. ожидание финала тестирования
у вас затягивается в бесконечность.
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39964637
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dakeiras
gradle - висячие демоны даже когда ничего не компилируется).
он кеширует изменения в коде...после ввода любой твоей буквы по изменению оного.
Кеширует в собственном удобном формате для компиляции.
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39964641
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dakeiras

8 это нереально сейчас, 16 маловато, 32 стандарт сейчас для разработчиков должен быть.

Давайте не будем также нежными и чувствительными. Нужно 32Gb?
Должно быть обоснование. Я-бы поинтересовался что находится внутри этих 32Гб
во время разработки. Ведь эта ситуация может шаблоном переносится на прод
и вам придется заказывать у Амазона EC2 инстанции с 32 Гб оперативы... почему?

Потому что нежный разрабочик так захотел? Среда занимает? Выйди из среды.
Прогони тесты в консоли.
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39964649
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Я считаю что зависимости между тестами - это зло. И их надо устранять. Хотя конечно для e2e тестов
у вас будет некий flow иммитирующий реальную работу вашей системы и здесь уже низкая скорость
тестинга - это не НЕДОСТАТОК gradle там или jupiter. Это именно недостаток вашей разрабатываемой
системы. Она - медленно процессит (к примеру) JMS сообщения. И соотв. ожидание финала тестирования
у вас затягивается в бесконечность.
Чтобы пользователь смог войти в систему кто-то информацию об этом пользователе должен добавить - это предусловия тестового сценария, т.е. bottom line здесь к примеру такой: должен войти администратор и добавить пользователя (назначить полномочия и т.п.), если мы начинаем говорить, что между тестовыми сценариями зависимостей быть не должно, то мы еще глубже залезаем в кроличью нору: теперь в тестовых сценариях нужно делать ветвления в духе: зайти, посмотреть есть ли пользователь или нет, если есть, то проверить полномочия, если нет, то создать. Вот ветвления в тестовых сценариях - это куда большее зло, чем зависимости между ними (Test NG, кстати, с зависимостями прекрасно справляется ).
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39964652
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ммм.. не знаю с testNG не работал.
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39964700
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Ммм.. не знаю с testNG не работал.
Ну вот вы говорите про параллельность, интеграционные тесты... а "народ" считает что для интеграционных тестов TestNG предпочтительнее, типа: для unit-тестов пусть разработчики со своим JUnit (5) копошатся, а действительно "полезные" тесты мы будем делать на TestNG.

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

Код: java
1.
2.
3.
task MyTask {
    subprojects.each { dependsOn("${it.name}:AnotherTask") }
}


? А по факту такой креатив в сценарии сборки нафиг не нужен - если что-то поменяется (что происходит крайне редко) можно и руками поправить, однако вот из-за таких мисфич сценарий сборки более-менее крупного проекта ни человек прочесть не может нормально, ни среда разработки (у них же в самом начале были какие-то попытки разбор build.gradle в IDE затащить, а потом остановились на том, что с gradle среда разработки должна работать только через демон). При этом действительно нужных возможностей в gradle толком нет, ну вот пример: есть какой-то срез кода из СКВ, как программно понять какой он версии? В maven это делается универсально через help:effective-pom, а в gradle каждый лепит кто во что горазд. Точно также с релизным воркфлоу: в maven release plugin - это часть экосистемы, а в gradle - какая-то сторонняя поделка, которой пользуются два инвалида (здесь больше похоже релизы в проектах на gradle не принято делать). В maven вообще есть киллер-фича: можно плагины дергать без прописывания их в pom.xml, ее полезность просто зашкаливает, гредлу до нее еще расти и расти.
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39964717
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не топлю за gradle если что.
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39964997
Фотография Valentin Kolesnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dakeiras
Valentin Kolesnikov
dakeiras,

В maven тоже есть распараллеливание.

Команда mvn -T 1C -B clean package

Хорошего вам дня!


Так я и спрашиваю - зачем? Что конкретно оно распараллеливает?


Компиляцию, сборку, запуск unit тестов.

Я у себя использую эту настройку.

Хорошего вам дня!
...
Рейтинг: 0 / 0
Начал знакомство со spring. Поругайте код
    #39965090
dakeiras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valentin Kolesnikov
dakeiras
пропущено...


Так я и спрашиваю - зачем? Что конкретно оно распараллеливает?


Компиляцию, сборку, запуск unit тестов.

Я у себя использую эту настройку.

Хорошего вам дня!

Да, уже выше понял. Спасибо.
...
Рейтинг: 0 / 0
75 сообщений из 75, показаны все 3 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Начал знакомство со spring. Поругайте код
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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