Кіріспе
Java платформасы үшін қолданбалық жүйе Spring Framework - Java платформасы үшін қолданбалық жүйе және басқару контейнерінің инверсиясы. Фреймворктің негізгі мүмкіндіктерін кез-келген Java қолданбасы пайдалана алады, бірақ Java EE (Enterprise Edition) платформасының үстінде веб-қосымшаларды құру үшін кеңейтулер бар. Фреймворк белгілі бір бағдарламалау моделін талап етпейді. Фреймворк Java қоғамдастығында Enterprise JavaBeans (EJB) моделіне қосымша ретінде танымал болды. Spring Framework - еркін және ашық бастапқы кодты бағдарламалық қамтамасыз ету.
The Spring Framework is an application framework and inversion of control container for the Java platform. The framework's core features can be used by any Java application, but there are extensions for building web applications on top of the Java EE (Enterprise Edition) platform. The framework does not impose any specific programming model The framework has become popular in the Java community as an addition to the Enterprise JavaBeans (EJB) model. The Spring Framework is free and open source software.
Нұсқалар тарихы
Версия күні Ескертулер 0.9 2003 1.0 2004 жылғы 24 наурыз Бірінші шығарылым. 2.0 2006 3.0 2009 4.0 2013 5.0 2017 6.0 22 қараша 2022 Бірінші нұсқаны Род Джонсон жазды, ол 2002 жылдың қазан айында Expert One on One J2EE Design and Development кітабының жариялануымен негіздемені шығарды. Фреймворк алғаш рет Apache 2.0 лицензиясы бойынша 2003 жылдың маусым айында шығарылды. Бірінші өндіріс нұсқасы 1.0 2004 жылдың наурыз айында шығарылды. Spring 1.2.6 бағдарламасы 2006 жылы Jolt өнімділік сыйлығы мен JAX инновациялық сыйлығын жеңіп алды. Spring 2.0 2006 жылдың қазанында, Spring 2.5 2007 жылдың қарашасында, Spring 3.0 2009 жылдың желтоқсанында, Spring 3.1 2011 жылдың желтоқсанында және Spring 3.2.5 2013 жылдың қарашасында шығарылды. Spring Framework 4.0 2013 жылдың желтоқсан айында шығарылды. Spring 4.0-дегі айтарлықтай жақсартуларға Java SE (Standard Edition) 8, Groovy 2, Java EE 7 және WebSocket-тің кейбір аспектілері кірді. Spring Framework 4.2.0 2015 жылдың 31 шілдесінде шығарылды және бірден 2015 жылдың 01 қыркүйегінде шығарылған 4.2.1 нұсқасына жаңартылды. Ол "Java 6, 7 және 8 бағдарламаларымен үйлесімді, негізгі жетілдірілімдерге және заманауи веб мүмкіндіктеріне назар аударады". Spring Framework 4.3 2016 жылдың 10 маусымында шығарылды және 2020 жылға дейін қолдау тапты. Ол "жалпы Spring 4 жүйелік талаптары (Java 6+, Servlet 2.5+), [ ]" ішіндегі соңғы буын болатыны жарияланды. Spring Framework 6.0 2022 жылдың 16 қарашасында шығарылды және Java 17+ базалық желісімен және Жакарта EE 9+ (жакарта атау кеңістігінде) көшірілуімен, жақында шығарылған Jakarta EE 10 API-леріне, мысалы Servlet 6.0 және JPA 3.1 сияқты назар аударылады.
The first version was written by Rod Johnson, who released the framework with the publication of his book Expert One on One J2EE Design and Development in October 2002. The framework was first released under the Apache 2.0 license in June 2003. The first production release, 1.0, was released in March 2004. The Spring 1.2.6 framework won a Jolt productivity award and a JAX Innovation Award in 2006. Spring 2.0 was released in October 2006, Spring 2.5 in November 2007, Spring 3.0 in December 2009, Spring 3.1 in December 2011, and Spring 3.2.5 in November 2013. Spring Framework 4.0 was released in December 2013. Notable improvements in Spring 4.0 included support for Java SE (Standard Edition) 8, Groovy 2,
some aspects of Java EE 7, and WebSocket. Spring Framework 4.2.0 was released on 31 July 2015 and was immediately upgraded to version 4.2.1, which was released on 01 Sept 2015. It is "compatible with Java 6, 7 and 8, with a focus on core refinements and modern web capabilities". Spring Framework 4.3 has been released on 10 June 2016 and was supported until 2020. It was announced to "be the final generation within the general Spring 4 system requirements (Java 6+, Servlet 2.5+), [ ]". Spring Framework 6.0 has been released on 16 November 2022 and came with a Java 17+ baseline and a move to Jakarta EE 9+ (in the jakarta namespace), with a focus on the recently released Jakarta EE 10 APIs such as Servlet 6.0 and JPA 3.1.
Бақылау ыдысының бұрылуы
Басқарудың кері айналуы (IoC) контейнері - Spring Framework-тың негізгі контейнері. Ол Java объектілерін рефлексия арқылы конфигурациялау мен басқарудың тұрақты құралын ұсынады. Контейнер белгілі бір объектілердің объектілік өмірлік циклдарын басқаруға жауапты: осы объектілерді құру, олардың инициализациялық әдістерін шақыру және оларды біріктіру арқылы осы объектілерді конфигурациялау. Көптеген жағдайларда Spring Framework-тің басқа бөліктерін пайдаланғанда контейнерді пайдаланудың қажеті жоқ, бірақ оны пайдалану қосымшаны конфигурациялауды және бейімдеуді жеңілдетеді. Spring контейнері қолданбаларды конфигурациялаудың тұрақты механизмін қамтамасыз етеді және шағын масштабтағы қолданбалардан бастап ірі корпоративтік қолданбаларға дейін барлық Java орталарымен біріктіреді. Бағдарламашы объектіні тікелей жасамайды, бірақ оны Spring конфигурация файлында анықтап, қалай жасалуы керектігін сипаттайды. Сол сияқты, қызметтер мен компоненттер тікелей шақырылмайды; оның орнына Spring конфигурациялық файлы қандай қызметтер мен компоненттерді шақыру керектігін анықтайды. Бұл IoC техникалық қызмет көрсету мен сынақты жеңілдетуге арналған.
Сабақтарды өсіру және басқару
Контейнер арқылы құрылған нысандар басқарылатын нысандар немесе бұршақтар деп аталады. Контейнерді XML (Extensible Markup Language) файлдарын жүктеу немесе конфигурациялық сыныптардағы Java-ның нақты түсіндірмелерін анықтау арқылы конфигурациялауға болады. Бұл дерек көздерінде бұршақтардың анықтамасы бар, олар бұршақтарды жасау үшін қажетті ақпаратты береді. The - бұл Spring-ке тән түсініктеме, ол класты конфигурация класы ретінде белгілейді. Конфигурация класы Spring-ке бұршақтарды береді Spring-тің конфигурация класындағы әрбір әдіс аннотациямен конфигурацияланады. Интерфейс кейіннен анотациямен конфигурацияланған нысандарды бұршақ ретінде қайтарады. Java негізделген конфигурацияның XML негізделген конфигурацияға қарағанда артықшылығы - жақсы типтік қауіпсіздік және қайта өңдеу.
Басқаруды кері айналдыру түрлері
Басқаруды кері бұрудың бірнеше түрі бар. Тәуелділік инъекциясы мен тәуелділік іздеу - бақылаудың кері бұрылуына мысалдар. Объектілерді тәуелділіктерді іздеу немесе тәуелділіктерді енгізу арқылы алуға болады.
Тәуелділік инъекциясы
Тәуелділік инъекциясы - контейнердің конструкторлар, қасиеттер немесе фабрикалық әдістер арқылы атау бойынша объектілерді басқа объектілерге тапсыратын үлгісі. Тәуелділік инъекциясын іске асырудың бірнеше жолы бар: конструкторға негізделген тәуелділік инъекциясы, сетерге негізделген тәуелділік инъекциясы және өріске негізделген тәуелділік инъекциясы.
Тәуелділіктерді іздеу
Тәуелділік іздеу - бұл шақырушы контейнер объектісін нақты атаумен немесе нақты типпен объектіден сұрайтын үлгі.
Автобайланысты
Spring фреймворкіне автобайланыс деп аталатын ерекшелік бар, ол JavaBean қасиеттерінде көрсетілген тәуелділіктерді ағымдағы фабрикадағы тиісті типтегі объектілерге автоматты түрде қанағаттандыру үшін пружиналық контейнерді пайдаланады. Бұл тек қана тиісті типті бір ғана нысан болса ғана болады. POJO-ларды автобайланысқа қосу үшін бірнеше аннотацияларды қолдануға болады, соның ішінде Spring-ке тән аннотация (одан басқа Spring-ке тән бірнеше аннотациялар, мысалы, or аннотациясы сияқты автобайланысты түсініксіздігін шешуге көмектеседі), және стандартты Java аннотациялары және аннотацияны бұршақты айқындайтын сыныпта Spring-ке бұршақты құруды атау бойынша автобайланысқа қосу кезінде басымдыққа қою үшін пайдалануға болады. Аннотацияны бұршақты анықтайтын класта Spring-ке бұршақты түріне қарай автобайланыс кезінде құруға басымдық беру туралы хабарлау үшін пайдалануға болады. Жазбаша түсініктеме - бұл JSR 250 немесе Java платформасы үшін жалпы түсініктемелерге сәйкес келетін түсініктеме. Жазбаша POJO-ға сілтемелерді атау бойынша автоматты түрде қосу үшін қолданылады. Жазбаша түсініктеме - JSR 300 немесе инъекцияға арналған стандартты түсініктемелерге сәйкес келетін түсініктеме. Жазбаша түр бойынша POJO-ға сілтемелерді автоматты түрде қосу үшін қолданылады.
The annotation can be used on a class that defines a bean to inform Spring to prioritize the bean creation when autowiring it by name. The annotation can be used on a class that defines a bean to inform Spring to prioritize the bean creation when autowiring it by type. The annotation is an annotation that conforms to JSR 250, or Common Annotations for the Java Platform. The annotation is used for autowiring references to POJOs by name. The annotation is annotation that conforms to JSR 300, or Standard Annotations for injection. The annotation is used for autowiring references to POJOs by type.
Spring MVC жұмыс ағыны
Пайдаланушы сілтемені түрткенде немесе веб-браузерінде нысанды жібергенде, сұрау Spring DispatcherServlet-ке жіберіледі. Диспетчер Сервлет Spring MVC-де алдыңғы бақылаушы болып табылады. Диспетчер Сервлетін жоғары дәрежеде бейімдеуге болады және икемді. Нақтырақ айтқанда, ол оргтың кез келген іске асырылуынан гөрі көп түрдегі басқарушыларды басқара алады. Жазық-жазық. желі. сервилет. MVC. Басқарушы немесе орг. Жазық-жазық. стереотип. Бақылаушы сыныптарды түсіндіреді. Ол бір немесе бірнеше басқарушы сәйкестендірулерді қарайды. DispatcherServlet тиісті бақылаушыны таңдайды және оған сұрауды жібереді. Бақылаушы нақты сұранысты өңдейді және нәтиже шығарады. Ол модель деп аталады. Бұл ақпаратты html немесе Jakarta Server Pages (JSP) немесе Thymeleaf сияқты кез келген алдыңғы технологиямен пішімдеу керек. Бұл - қолданбаның көрінісі. Барлық ақпарат Model And View объектісінде. Басқарушы белгілі бір көрініске қосылмаған кезде, DispatcherServlet ViewResolver көмегімен нақты көріністі (мысалы, JSP) табады.
Жазғы WebSocket
Деректер ағынымен тиімді жұмыс істеудің негізгі ережесі - ешқашан бөгет жасамау. WebSocket бұл мәселенің тиімді шешімі болып табылады. WebSocket протоколы - TCP қосылысы арқылы толық дуплекс байланыс арналарын пайдалануға мүмкіндік беретін төменгі деңгейдегі көлік протоколы. WebSocket HTTP-ге балама ретінде қызмет етеді, ол клиент пен сервер арасындағы екі жақты байланысты қамтамасыз етеді. WebSocket әсіресе жоғары жылдамдықпен және көлемде шағын деректер бөліктерін жиі және тез алмасуды қажет ететін қосымшалар үшін пайдалы. Spring реактивті қосымша үшін WebSocket API-ді қамтамасыз ету арқылы WebSocket протоколын қолдайды. @EnableWebSocket аннотациясы Spring конфигурация класына орналастырылған кезде Websocket сұранысын өңдеу функционалдығын береді. Міндетті интерфейс - WebSocketConfigurer, ол WebSocketConfigurer-ге қол жеткізуді береді. Содан кейін WebSocket URL-і тиісті басқарушыларға тіркелім WebSocketHandlers ((WebSocketHandlerRegistry) әдісін іске асыру арқылы сәйкестендіріледі.
Көктемгі WebFlux
Spring WebFlux - функционалдық бағдарламалау парадигмасына сәйкес, реактивті Spring қолданбаларын құру үшін жасалған фреймворк. Бұл фреймворк функционалдық бағдарламалау мен Реактивті ағындыларды кеңінен қолданады. Spring WebFlux-ты қолданудың жақсы үлгісі - бұл бірден ақпарат жіберуді және қабылдауды қажет ететін, мысалы, чат мүмкіндіктері бар веб-қосымшалар. Spring WebFlux технологиясын пайдаланатын қосымшалар әдетте MVC-ге қарағанда аз оқылатын болса да, олар толырақ және кеңейту оңай. Spring WebFlux желіге кіруді синхрондаумен байланысты қиындықтарды азайтады. Spring WebFlux сервердің жіберген оқиғаларын (SSE) қолдайды, бұл сервердің түрткілеу технологиясы, ол клиентке серверден HTTP қосылысы арқылы автоматты жаңартуларды алуға мүмкіндік береді. Бұл байланыс бір бағыттағы болып табылады және JMS-де кездесетін жариялау / жазылу моделімен көптеген ұқсастықтар бар.
Jakarta Enterprise Beans (EJB) компаниясымен қарым-қатынасы
Контейнерді Pitchfork жобасы арқылы ішінара EJB (Enterprise JavaBeans) 3.0 контейнеріне айналдыруға болады. Кейбіреулер "Бастапқы" бағдарламаны стандарттарға сәйкес келмегені үшін сынға алады. Алайда, SpringSource EJB 3 сәйкестігін негізгі мақсат ретінде қарамайды және Spring Framework және контейнер қуатты бағдарламалау модельдеріне мүмкіндік береді деп мәлімдейді.
Spring4Shell-тің осал тұсы
Spring Framework-тің кейбір нұсқаларына әсер ететін қашықтан кодты орындау осаллығы 2022 жылдың сәуірінде жарияланды. Оған Spring4Shell атауы берілді. Бұл атау Log4Shell осаллығына сілтеме жасау үшін берілді.