2017-11-17 1 views
0

8 명의 멤버가있는 Spring 구성 요소가 있습니다.많은 필드가있는 스프링 생성자 삽입

저는 현재이 8 명의 회원에게 필드 주입을 autowiring하고 있습니다.

이제이 멤버들을 비공개 final로 만들고 생성자 삽입을 설정하여 설정하려고합니다.

이 작업은 충분히 쉽지만, 이제는 8 개의 매개 변수가있는 구성 요소 생성자가 있습니다.

나는 setter injection을 사용할 수 있고 XML 파일에서이 값들을 설정할 수 있다는 것을 알고있다. 그러나 나는 이것을 원하지 않는다.

다른 대안이 있습니까?

편집 :

이 구성 요소는 단지 하나의 일을한다. 하지만 여기에는 여러 가지 다른 서비스를 호출하는 것이 포함됩니다. 그러므로 8 회 주사

+1

것은, 그때 그들은 수 없습니다 결정적인. – ESala

+0

좋은 점 - 그걸 시도하고 그 옵션을 잊어 버린;) –

+2

당신을 위해 생성자를 생성하는 데 Lombok을 사용합니까? – chrylis

답변

5

첫째, 대안이 없습니다.
두 번째로, 컨트 리뷰 터가 8 개의 매개 변수를 가지고 있으면 제대로 설계되지 않았습니다. 나는 당신이 수업 구조와 책임에 대해 재고해야한다고 생각합니다. 클래스를 2 개 또는 3 개의 분리 된 빈으로 분리하여 삽입하는 것을 고려하십시오.

생성자는 (단일 책임의 원칙) SRP를 vioalating됩니다 대부분의 경우 8 인자가있는 경우, 모든

0

먼저이 속성을 읽어 다음 .properties 파일에서 이러한 매개 변수의 초기 값을 설정할 수 있습니다 파일을 pojo 구성 클래스로 사용하고 .properties 파일을 pojo로 변환하는 것은 매우 쉽습니다.

때문에 생성자는 다음과 같이 될 것입니다

@Autowired 공공 온도 (ConfigPojoClass의 설정) { ..... } 당신이 세터와 함께 할 경우