Eʼlon

All lectures for UZ purposes
Daraja, Dars
Mavjud

Spring'dagi WebApplicationContext servletida binlarni standart aniqlash orqali controller binlarni belgilash mumkin. @Controller stereotipi avtomatik aniqlashni amalga oshiradi, bu esa Spring anʼanaviy @Component annotatsiyasi bilan belgilangan sinflarni classpath'da aniqlash va ularni bin sifatida avtomatik ro'yxatga olishni qo'llab-quvvatlaydi. Bu, shuningdek, veb-komponent sifatida o'z rolini ko'rsatib, annotatsiyalangan sinf uchun stereotip sifatida ishlaydi.

@Controller annotatsiyasi bilan belgilangan binlarni avtomatik aniqlashni faollashtirish uchun quyidagi misolda ko'rsatilganidek, Java konfiguratsiyasiga komponentlarni skanerlashni qo'shish mumkin:

Java
@Configuration
@ComponentScan("org.example.web")
public class WebConfig {
    // ...
}
Kotlin
@Configuration
@ComponentScan("org.example.web")
class WebConfig {
    // ...
}

Quyidagi misolda avvalgi misoldagi konfiguratsiyaning XML ekvivalenti ko'rsatilgan:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd">
    <context:component-scan base-package="org.example.web"/>
    <!-- ... -->
</beans>

@RestController bu metaanotatsiya bo'lib, u @Controller va @ResponseBody annotatsiyalari bilan belgilangan. Har bir metodi @ResponseBody annotatsiyasini tip darajasida meros qilib oladi va natijada javobni to'g'ridan-to'g'ri HTML andozasiga vizualizatsiya qilish o'rniga tanaga yozib beradi.

AOP Proxy

Ba'zi hollarda kontrolerni AOP proxy orqali ishlatishda dekoratsiya qilish kerak bo'lishi mumkin. Masalan, agar siz controllerni @Transactional annotatsiyalar bilan belgilamoqchi bo'lsangiz. Bunday hollarda, ayniqsa controllerlar uchun, sinf asosida proksi qilishni tavsiya qilamiz. Bu controllerlar uchun odatiy tanlov. Biroq, agar controller Spring konteksining callback interfeysini (masalan, InitializingBean, *Aware va boshqalar) amalga oshirib qo'ymagan bo'lsa, sinfga asoslangan proksi aniq o'rnatilishi kerak. Masalan, <tx:annotation-driven/> ni <tx:annotation-driven proxy-target-class="true"/> ga yoki @EnableTransactionManagement ni @EnableTransactionManagement(proxyTargetClass = true) ga o'zgartirishingiz mumkin.

Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION