Beany wewnętrzne - stworzenie beanu klasy Person

0

Przerabiając jeden z tutoriali, doszedłem do beanów wewnętrznych gdzie chciałbym stworzyć (przykładowy bean - na prawdę, nie mam pomysłu na przykład klas i zmiennych) bean klasy Person. Klasa Person posiada pola:

  • String name
  • int age
  • School school.

Klasa School posiada pola:

  • String name
  • int number
  • Principal principal

Klasa Principal posiada:

  • String name
  • int salary.

W konstruktorach jest to podane w takiej samej kolejności. Chciałbym teraz utworzyć to za pomocą beanów wewnętrznych (a potem przerobić z użyciem namespace c i p). Mógłby mi ktoś pomóc to poprawić i nakierować jak zmienić to korzystając z pomocy namespace c? Tzn jak wstrzyknąć bean wewnętrzny korzystając z namespace c

Kod:

 	<bean id="person" class="Person">
		<constructor-arg name="age" value='18'></constructor-arg>
		<constructor-arg name="name" value="someName"></constructor-arg>
		<constructor-arg name="school" 
			<bean class="School">
				<constructor-arg index="1" value="3"></constructor-arg>
				<constructor-arg index="0" value="LO"></constructor-arg>
				<constructor-arg index="2" 
					<bean class="Principal" c:salary="2000" c:name="someName">

			</bean>
		</constructor-arg>

	</bean>
1

Z którego roku do nas przybywasz wędrowcze? o_O Wersja dla ludzi z naszych czasów:

@Named
class UberDependency{
    private final String value;
    
    @Inject
    UberDependency(@Value("${some.property}") String value){
        this.value = value;
    }
}

@Named
class UberService{
    private final UberDependency uberDependency;
    
    @Inject
    UberService(UberDependency uberDependency){
        this.uberDependency = uberDependency;
    }
}

I voila, wartość z propertisów wstrzyknięta, bean do innego beana wstrzyknięty. Do tego mamy tu jakieś type-safe a nie zabawy w kolejność argumentów konstruktora i cuda na kiju z xmlem.

A pomysł z beanami na szkołe i klase to jakiś dramat i totalny brak zrozumienia "po co" się to robi w ogóle.

0

Co masz na myśli mówiąc że to jakiś dramat? Równie dobrze, dla przykładu mogłem wziąć i nazwać to sobie Class1 Class2 i Class3. Imo - przykłady na których się uczy nie mają jakiegoś większego znaczenia. A na razie, robię tak, gdyż się dopiero tego uczę a w tutorialu na razie jest pisanie Springa w Xmlu, dopiero potem jest w Javie.

edit: ale tym "Z którego roku do nas przybywasz wędrowcze?" mnie rozbawiłeś :D

0

wyrzuć ten tutorial

0

Wezmę Wasze uwagi pod uwagę. A jakiś tutorial (nie dokumentację na razie) polecacie?

0

w tutorialu na razie jest pisanie Springa w Xmlu

To ten tutorial jest chyba starszy od ciebie w takim razie ;) Pisany pod Springa 2 jeszcze? Bo nie wiem czy wiesz, ale niedługo Spring 5...

Co masz na myśli mówiąc że to jakiś dramat? Równie dobrze, dla przykładu mogłem wziąć i nazwać to sobie Class1 Class2 i Class3. Imo - przykłady na których się uczy nie mają jakiegoś większego znaczenia

Mają dość spore znaczenie, bo jedna rzecz to nauczyć się jak się czegoś używa, a druga (nawet ważniejsza!) sprawa to dlaczego i kiedy. Kontener IoC nie służy do tworzenia wszystkich obiektów w programie a te przykłady których użyłeś są bardzo złymi kandydatami na obiekty zarządzane przez kontener.

A jakiś tutorial (nie dokumentację na razie) polecacie?

Dokumentacja Springa sprawdza sie dość dobrze. przy czym oczywiście nie mam na mysli API Reference tylko https://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/

0

Obilo mi się o uszy że wchodzi Spring 5.
Problem z uczeniem się dokumentacji jest taki, że jest ona dużo bardziej obszerna niż każdy inny tutorial na YT (z jednej strony to problem z drugiej wręcz przeciwnie - więcej wiedzy można przyswoić) i kolejny duży problem jest taki, że jest po angielsku. Jak z samym angielskim nie mam większych problemów i umiem zrozumieć większość co ktoś mówi/jest napisane, tak przestaje się skupiać po dłuższym czytaniu/słuchaniu po angielsku. Anyway, dzięki za porady. Xmla chyba porzuce już.
Edit: na których rozdziałach z dokumentacji powinienem się bardziej skupić, które olać totalnie a które przeczytać pobieżnie @Shalom ?

1

@Aisekai: skupiłbym się na początku nad DI (JSR-330), Spring-Data, Spring MVC, Spring AOP.

0

AOP chodzi Ci o AspectJ? https://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#aop 11 rozdział.
A spring-data JDBC? 17-19 rozdział?

0

Tak, przy czym samemu z AOP nie będziesz pewnie dużo korzystać, ale warto rozumieć co to jest bo Spring z tego korzysta.
Nie tylko Spring JDBC, popatrz też na https://spring.io/guides/gs/accessing-data-jpa/

1 użytkowników online, w tym zalogowanych: 0, gości: 1