/
sbespalko
/
mind-maps
Обзор
Документация
Войти
/
sbespalko
/
mind-maps
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Spring/Spring.mm
2 556 строк
126 KB
sergey
git init
10 окт 2024, 15:04
10 окт 2024, 15:04
96b0011
Код
Авторство
О чём код?
<map version="1.0.1"> <!-- To view this file, download free mind mapping software FreeMind from http://freemind.sourceforge.net --> <node COLOR="#000000" CREATED="1491125570870" ID="ID_374335078" MODIFIED="1493794847740" TEXT="Spring"> <font NAME="SansSerif" SIZE="20"/> <hook NAME="accessories/plugins/AutomaticLayout.properties"/> <node COLOR="#0033ff" CREATED="1492082073603" ID="ID_1991781908" MODIFIED="1493376159896" POSITION="right" TEXT="AOP"> <edge STYLE="sharp_bezier" WIDTH="8"/> <font NAME="SansSerif" SIZE="18"/> <node COLOR="#00b439" CREATED="1493281222220" ID="ID_103743341" MODIFIED="1493281224376" TEXT="cross-cutting concerns"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1493281226463" ID="ID_1186550792" MODIFIED="1493281253197" TEXT="сквозные задачи/проблемы"> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1492082086482" ID="ID_1914137037" MODIFIED="1492087242565" TEXT="Aspect"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1492082179582" ID="ID_123516665" MODIFIED="1492087242565" TEXT="В AspectJ — объект, интегрирующий отдельные сквозные функции системы (advices) и привязывающий их выполнение к некоторому срезу точек"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1492087178911" ID="ID_752225507" MODIFIED="1492087242565" TEXT="срезы + советы"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1492090327721" ID="ID_20999002" MODIFIED="1492090380790" TEXT="объекты-обертки (прокси-объекты) с тем же интерфейсом, что и объекты, к-е они обертывают"> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1492082089482" ID="ID_1883071493" MODIFIED="1492087242565" TEXT="Advice"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1492082218669" ID="ID_120266573" MODIFIED="1492087242565" TEXT="отдельная функция (метод) аспекта, выполняемая в точке вставки"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1492087022023" ID="ID_1397613635" MODIFIED="1492087242565" TEXT="когда"> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1492087027944" ID="ID_1354577357" MODIFIED="1492087029491" TEXT="до"/> <node COLOR="#111111" CREATED="1492087033071" ID="ID_464935831" MODIFIED="1492087035118" TEXT="после"/> <node COLOR="#111111" CREATED="1492087037839" ID="ID_1787634682" MODIFIED="1492087044903" TEXT="после успешного вызова"/> <node COLOR="#111111" CREATED="1492087045239" ID="ID_930732819" MODIFIED="1492087059834" TEXT="после исключения"/> <node COLOR="#111111" CREATED="1492087063095" ID="ID_1430246964" MODIFIED="1492087064751" TEXT="вокруг"/> </node> </node> <node COLOR="#00b439" CREATED="1492082079218" ID="ID_243672031" MODIFIED="1492087242565" TEXT="JoinPoint"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1492082197118" ID="ID_1773441326" MODIFIED="1492087242565" TEXT="место основной программы, к которому привязывается выполнение отдельных функций аспекта"> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1492082096450" ID="ID_1674489955" MODIFIED="1492087242565" TEXT="PointCut"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1492082206214" ID="ID_1451996334" MODIFIED="1492087242565" TEXT="набор точек вставки, удовлетворяющих некоторому заданному условию"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1492087100263" ID="ID_1147578978" MODIFIED="1492087242565" TEXT="где"> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1492087107527" ID="ID_1506920772" MODIFIED="1492087129202" TEXT="можно использовать reg expressions"/> </node> </node> <node COLOR="#00b439" CREATED="1492082259574" ID="ID_959270928" MODIFIED="1492087242565" TEXT="Introduction"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1492082714020" ID="ID_1669281775" MODIFIED="1492087242565" TEXT="добавление новых методов или атрибутов в существующие классы, без их изменения"> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1492082238053" ID="ID_579849047" MODIFIED="1492087280959" TEXT="Weaving"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1492082666451" ID="ID_1857408086" MODIFIED="1492087242565" TEXT="процесс применения аспектов к целевому объекту для создания нового, проксированного объекта"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1492087282863" ID="ID_269814150" MODIFIED="1492087286036" TEXT="когда"> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1492087288927" ID="ID_1727396832" MODIFIED="1492087294006" TEXT="при компиляции"/> <node COLOR="#111111" CREATED="1492087294367" ID="ID_1582307074" MODIFIED="1492087302556" TEXT="при загрузке класса"/> <node COLOR="#111111" CREATED="1492087304896" ID="ID_1194685052" MODIFIED="1492087309287" TEXT="во время выполнения"/> </node> </node> </node> <node COLOR="#0033ff" CREATED="1492087388639" ID="ID_1022762813" MODIFIED="1493375395154" POSITION="right" TEXT="AspectJ"> <edge STYLE="sharp_bezier" WIDTH="8"/> <font NAME="SansSerif" SIZE="18"/> <node COLOR="#00b439" CREATED="1492088269544" ID="ID_1450941593" MODIFIED="1493712061057" TEXT="Операторы"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1492088274183" ID="ID_1212895266" MODIFIED="1492088280981" TEXT="and &&"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1492088281912" ID="ID_1548695618" MODIFIED="1492088284866" TEXT="or ||"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1492088285159" ID="ID_1143089071" MODIFIED="1492088309225" TEXT="not !"> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1492087867856" ID="ID_525196043" MODIFIED="1493712062061" TEXT="фильтр срезов"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1492087401896" ID="ID_124414838" MODIFIED="1492087880902" TEXT="args() "> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1492087485687" ID="ID_244528150" MODIFIED="1492087880902" TEXT="аргументы имеют указанный тип"> <font NAME="SansSerif" SIZE="12"/> </node> </node> <node COLOR="#990000" CREATED="1492087686791" ID="ID_60130705" MODIFIED="1492087880902" TEXT="@args()"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1492087727408" ID="ID_1964918289" MODIFIED="1492087880902" TEXT="аргументы имеют указанные типы аннотаций"> <font NAME="SansSerif" SIZE="12"/> </node> </node> <node COLOR="#990000" CREATED="1492087417423" ID="ID_1938767838" MODIFIED="1492088251322" TEXT="execution()"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> execution(* ru.sbespalko.test.MyNIO.test(..)) </p> <p> * - любой тип возвр значения<br />тип, которому приналежит метод<br />Имя метода<br />Любые аргументы </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1492087755847" ID="ID_1313346978" MODIFIED="1492087880902" TEXT="точки - вызовы методов"> <font NAME="SansSerif" SIZE="12"/> </node> </node> <node COLOR="#990000" CREATED="1492087421416" ID="ID_1333412954" MODIFIED="1492087880902" TEXT="this()"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1492087428120" ID="ID_952078898" MODIFIED="1492087880902" TEXT="target()"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1492087545079" ID="ID_442699181" MODIFIED="1492087880902" TEXT="целевой объект имеет указанный тип"> <font NAME="SansSerif" SIZE="12"/> </node> </node> <node COLOR="#990000" CREATED="1492087697199" ID="ID_437071193" MODIFIED="1492087880902" TEXT="@target()"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1492087805527" ID="ID_731006720" MODIFIED="1492087880902" TEXT="цель имеет указанные типы аннот."> <font NAME="SansSerif" SIZE="12"/> </node> </node> <node COLOR="#990000" CREATED="1492087442000" ID="ID_1206288175" MODIFIED="1492087880902" TEXT="within()"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1492087639391" ID="ID_1601815941" MODIFIED="1492087880902" TEXT="внутри указанных типов"> <font NAME="SansSerif" SIZE="12"/> </node> </node> <node COLOR="#990000" CREATED="1492087705696" ID="ID_1939540902" MODIFIED="1492087880902" TEXT="@within()"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1492087453959" ID="ID_230611083" MODIFIED="1492087880918" TEXT="@annotation"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1492087848369" ID="ID_954523265" MODIFIED="1492087880918" TEXT="точки с нужной аннот."> <font NAME="SansSerif" SIZE="12"/> </node> </node> <node COLOR="#990000" CREATED="1492087945736" ID="ID_1611292554" MODIFIED="1492088327423" TEXT="bean()"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> execution(* com.springinaction.springidol.Instrument.play()) </p> <p> and bean(eddie) </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1492087949047" ID="ID_232700583" MODIFIED="1492087955923" TEXT="внутри компонента"/> </node> </node> <node COLOR="#00b439" CREATED="1492088358456" ID="ID_327704743" MODIFIED="1492088366254" TEXT="Объявление аспектов"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1492088465296" ID="ID_62188906" MODIFIED="1493375498418" TEXT="<aop:config>"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> <aop:config> </p> <p> <aop:aspect ref="audience"> <!-- Ссылка на компонент audience --> </p> <p> <aop:before pointcut="execution(* com.springinaction.springidol.Performer.perform(..))" </p> <p> method="takeSeats" /> <!-- Перед выступлением --> </p> <p> <aop:before pointcut="execution(* com.springinaction.springidol.Performer.perform(..))" </p> <p> method="turnOffCellPhones" /> <!-- Перед выступлением --> </p> <p> <aop:after-returning pointcut="execution(* com.springinaction.springidol.Performer.perform(..))" </p> <p> method="applaud" /> <!-- После выступления --> </p> <p> <aop:after-throwing pointcut="execution(* com.springinaction.springidol.Performer.perform(..))" </p> <p> method="demandRefund" /> <!-- После неудачного выступления --> </p> <p> </aop:aspect> </p> <p> </aop:config> </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1493375509117" ID="ID_771005143" MODIFIED="1493375517813" TEXT="контейнер для аспектов"/> </node> <node COLOR="#990000" CREATED="1492088429040" ID="ID_1972752581" MODIFIED="1493375792781" TEXT="<aop:aspect>"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> <aop:aspect id="myAspect" ref="audience"> <!-- Ссылка на компонент audience -- </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1493376492943" ID="ID_205558764" MODIFIED="1493376565235" TEXT="id="myAspect" ref="BEAN">"/> </node> <node COLOR="#990000" CREATED="1492088497944" ID="ID_1444442320" MODIFIED="1493375845914" TEXT="<aop:pointcut>"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> <aop:aspect ref="audience"> </p> <p> <aop:pointcut id="performance" expression="execution(* com.springinaction.springidol.Performer.perform(..))"/> </p> <p> <!-- Определение среза множества точек сопряжения --> </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1492088764288" ID="ID_1828319596" MODIFIED="1492088770070" TEXT="именованный срез"/> <node COLOR="#111111" CREATED="1493375955671" ID="ID_40538912" MODIFIED="1493376286643" TEXT="id="..." expression="execution(* CLASSNAME.method(..))"/>"/> </node> <node COLOR="#990000" CREATED="1493376051665" ID="ID_723078997" MODIFIED="1493376080243" TEXT="<aop:{ADVICE_NAME}>"> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1493376120447" ID="ID_1572074329" MODIFIED="1493376141179" TEXT="pointcut-ref="..." method="...""/> <node COLOR="#111111" CREATED="1492088459016" ID="ID_1846781552" MODIFIED="1493376191775" TEXT="<aop:before>"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> <aop:before pointcut= </p> <p> "execution(* com.springinaction.springidol.Performer.perform(..))" </p> <p> method="turnOffCellPhones" /> <!-- Перед выступлением --> </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="12"/> <node COLOR="#111111" CREATED="1492089229761" ID="ID_453466361" MODIFIED="1492089292816" TEXT="совет с параметром"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> <aop:pointcut id="thinking" expression="execution(* com.springinaction.springidol.Thinker.thinkOfSomething(String)) and args(thoughts)" /> </p> <p> <aop:before pointcut-ref="thinking" method="interceptThoughts" arg-names="thoughts" /> </p> </body> </html></richcontent> </node> </node> <node COLOR="#111111" CREATED="1492088379432" ID="ID_1502341737" MODIFIED="1493376191772" TEXT="<aop:after>"> <font NAME="SansSerif" SIZE="12"/> <node COLOR="#111111" CREATED="1492088928393" ID="ID_997790117" MODIFIED="1492088935753" TEXT="после в любом случае"/> </node> <node COLOR="#111111" CREATED="1492088387984" ID="ID_505086884" MODIFIED="1493376173319" TEXT="<aop:after-returning>"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> <aop:after-returning pointcut= </p> <p> "execution(* com.springinaction.springidol.Performer.perform(..))" </p> <p> method="applaud" /> <!-- После выступления --> </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="12"/> <node COLOR="#111111" CREATED="1493376674443" ID="ID_496718596" MODIFIED="1493376674443" TEXT="returning="retVal""/> </node> <node COLOR="#111111" CREATED="1492088399792" ID="ID_1066206521" MODIFIED="1493376185398" TEXT="<aop:after-throwing>"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> <aop:after-throwing pointcut="execution(* com.springinaction.springidol.Performer.perform(..))" </p> <p> method="demandRefund" /> <!-- После неудачного выступления --> </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="12"/> <node COLOR="#111111" CREATED="1493376694313" ID="ID_1973032718" MODIFIED="1493376694314" TEXT="throwing = "ex""/> </node> <node COLOR="#111111" CREATED="1492088417936" ID="ID_347727735" MODIFIED="1493376185066" TEXT="<aop:around>"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> <aop:pointcut id="performance2" expression="execution(* com.springinaction.springidol.Performer.perform(..))"/> </p> <p> <!-- Совет, выполняемый и до, и после --> </p> <p> <aop:around pointcut-ref="performance2" method="watchPerformance()" /> </p> <p> ********************** </p> <p> public void watchPerformance(ProceedingJoinPoint joinpoint) { </p> <p> try { </p> <p>       .... </p> <p>       joinpoint.proceed(); </p> <p>       .... </p> <p> }catch (Throwable t) { } </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="12"/> <node COLOR="#111111" CREATED="1492089125592" ID="ID_321732288" MODIFIED="1492089125592"> <richcontent TYPE="NODE"><html> <head> </head> <body> <p> ProceedingJoinPoint </p> </body> </html></richcontent> </node> </node> </node> <node COLOR="#990000" CREATED="1492088369584" ID="ID_645492885" MODIFIED="1493712076903" TEXT="<aop:advisor>"> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1492088802352" ID="ID_822040796" MODIFIED="1492088806650" TEXT="объект советчик"/> </node> <node COLOR="#990000" CREATED="1492088477944" ID="ID_1960888924" MODIFIED="1493375496669" TEXT="<aop:declare-parents>"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> <aop:declare-parents </p> <p>     types-matching="com.springinaction.springidol.Performer+" </p> <p>     implement-interface="com.springinaction.springidol.Contestant" </p> <p>     default-impl="com.springinaction.springidol.GraciousContestant" </p> <p>     /> </p> <p> **********OR************ </p> <p> <aop:declare-parents </p> <p>     types-matching="com.springinaction.springidol.Performer+" </p> <p>     implement-interface="com.springinaction.springidol.Contestant" </p> <p>     delegate-ref="contestantDelegate" </p> <p>     /> </p> <p> *************************** </p> <p> те, кто Performer прибавляют родителя - Contestant </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1492091918826" ID="ID_1738328181" MODIFIED="1492091921092" TEXT="внедрение"/> </node> </node> <node COLOR="#00b439" CREATED="1492091401121" ID="ID_1291221737" MODIFIED="1492091407529" TEXT="Аннотации"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1492088437096" ID="ID_528595275" MODIFIED="1493376854603" TEXT="<aop:aspectj-autoproxy>"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> aspectjrt.jar </p> <p> aspectjweaver.jar </p> <p> aspectj.jar </p> <p> aopalliance.jar </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1492088826160" ID="ID_17589290" MODIFIED="1492091611907" TEXT="включает поддержку аннотаций @AspectJ"/> <node COLOR="#111111" CREATED="1492091621050" ID="ID_1669945422" MODIFIED="1492091621050" TEXT="AnnotationAwareAspectJAutoProxyCreator"/> </node> <node COLOR="#990000" CREATED="1492091423217" ID="ID_1676355172" MODIFIED="1492091423217" TEXT="@Aspect"> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1492091481865" ID="ID_1940038703" MODIFIED="1492091497466" TEXT="класс стал аспектом, его можно внедрять"/> </node> <node COLOR="#990000" CREATED="1492091429266" ID="ID_1497455659" MODIFIED="1492091429266" TEXT="@Pointcut"> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1493376921496" ID="ID_1815768893" MODIFIED="1493376921496" TEXT="@Pointcut("execution(* com.xyz.myapp.service.*.*(..))")"/> <node COLOR="#111111" CREATED="1493377241358" ID="ID_1786127415" MODIFIED="1493377255803" TEXT="перед сигнатурой - имя как у метода"/> </node> <node COLOR="#990000" CREATED="1493376974103" ID="ID_1850855003" MODIFIED="1493376980163" TEXT="Advices"> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1492091449537" ID="ID_1087679290" MODIFIED="1493376984569" TEXT="@Before("performance()")"> <font NAME="SansSerif" SIZE="12"/> <node COLOR="#111111" CREATED="1492091771370" ID="ID_959627733" MODIFIED="1492091805432" TEXT="@Before("thinking(thoughts)") с параметром"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> передача параметра в совет </p> </body> </html></richcontent> </node> </node> <node COLOR="#111111" CREATED="1493377003023" ID="ID_1330933041" MODIFIED="1493377012851" TEXT="@After("method()")"/> <node COLOR="#111111" CREATED="1492091467249" ID="ID_751292270" MODIFIED="1493376988683" TEXT="@AfterReturning"> <font NAME="SansSerif" SIZE="12"/> <node COLOR="#111111" CREATED="1493377035206" ID="ID_610986008" MODIFIED="1493377114843" TEXT="(pointcut="...", returning="retVal")"/> </node> <node COLOR="#111111" CREATED="1492091471827" ID="ID_1505352697" MODIFIED="1493376988683" TEXT="@AfterThrowing"> <font NAME="SansSerif" SIZE="12"/> <node COLOR="#111111" CREATED="1493377035206" ID="ID_251953921" MODIFIED="1493377144067" TEXT="(pointcut="...", throwing="ex")"/> </node> <node COLOR="#111111" CREATED="1492091707250" ID="ID_517486693" MODIFIED="1493376988684" TEXT="@Around("performance()")"> <font NAME="SansSerif" SIZE="12"/> <node COLOR="#111111" CREATED="1492091711289" ID="ID_343592234" MODIFIED="1492091721747" TEXT="ProceedingJoinPoint joinpoint.proceed();"/> </node> </node> <node COLOR="#990000" CREATED="1492091911442" ID="ID_407209006" MODIFIED="1493376783431" TEXT="@DeclareParents"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> @Aspect </p> <p> public class ContestantIntroducer { </p> <p>      @DeclareParents( // Внедрение интерфейса Contestant </p> <p>                                           value = "com.springinaction.springidol.Performer+", </p> <p>                                           defaultImpl = GraciousContestant.class) </p> <p>      public static Contestant contestant; </p> <p> } </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1492091913442" ID="ID_915853908" MODIFIED="1492091916020" TEXT="внедрение"/> </node> </node> <node COLOR="#00b439" CREATED="1494260193892" ID="ID_1193670312" MODIFIED="1494260205883" TEXT="Аспект.aj"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1494260208105" ID="ID_1678743884" MODIFIED="1494260222450" TEXT="отдельный файл аспекта с раширением *.aj"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1494260535124" ID="ID_180774286" MODIFIED="1494260544842" TEXT="AspectJ поддерживает больше кол-во точек"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1492092673482" ID="ID_577620644" MODIFIED="1494263884965" TEXT="регистрируем в Spring"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> <bean class="com.springinaction.springidol.JudgeAspect" factory-method=”aspectOf”> </p> <p> <property name="criticismEngine" ref="criticismEngine" /> </bean> </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1492092725122" ID="ID_274133098" MODIFIED="1494260586185" TEXT="factory-method="aspectOf""> <font NAME="SansSerif" SIZE="12"/> </node> </node> <node COLOR="#990000" CREATED="1494260471366" ID="ID_1997614108" MODIFIED="1494260473604" TEXT="aspect"> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1494260239386" ID="ID_511926160" MODIFIED="1494260476076" TEXT="вместо class слово aspect"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> public aspect Wrapper { ... } </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="12"/> </node> </node> <node COLOR="#990000" CREATED="1494260477910" ID="ID_932839091" MODIFIED="1494260480283" TEXT="pointcut"> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1494260289370" ID="ID_437411992" MODIFIED="1494260482463" TEXT="pointcut pointcutName() : execution(* PACKAGE_CLASS.METHOD(..));"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> объявили срез </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="12"/> </node> </node> <node COLOR="#990000" CREATED="1494260483450" ID="ID_336293495" MODIFIED="1494260485244" TEXT="advice"> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1494260413029" ID="ID_1046172742" MODIFIED="1494260489717" TEXT="before: pointcutName() {...}"> <font NAME="SansSerif" SIZE="12"/> </node> <node COLOR="#111111" CREATED="1494260450315" ID="ID_534226781" MODIFIED="1494260489729" TEXT="after: pointcutName() {...}"> <font NAME="SansSerif" SIZE="12"/> </node> </node> </node> </node> <node COLOR="#0033ff" CREATED="1491815463579" ID="ID_1073721023" MODIFIED="1609582094796" POSITION="left" TEXT="Bean LifeCycle"> <edge STYLE="sharp_bezier" WIDTH="8"/> <font NAME="SansSerif" SIZE="18"/> <node COLOR="#00b439" CREATED="1491815562726" ID="ID_682785636" MODIFIED="1492678039938" TEXT="1. Создает экземпляр компонента."> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1491815562728" ID="ID_1284818051" MODIFIED="1492678059237" TEXT="2. Внедряет значения и ссылки на компоненты в свойства."> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1491815562729" ID="ID_1028973616" MODIFIED="1492678141812" TEXT="3. IF BeanNameAware, -> setBeanName() + идентификатор компонента"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1492677906831" ID="ID_202428925" MODIFIED="1492678355975" TEXT="BeanNameAware"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1492092871970" ID="ID_1665074682" MODIFIED="1492092882384" TEXT="setBeanName()"> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1491815562730" ID="ID_1018458110" MODIFIED="1492678156116" TEXT="4. IF BeanFactoryAware -> setBeanFactory() + фабрика компонентов."> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1492677915792" ID="ID_186687161" MODIFIED="1492677921515" TEXT="BeanFactoryAware"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1492092885946" ID="ID_1047913185" MODIFIED="1492678357696" TEXT="setBeanFactory()"> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1491815562732" ID="ID_65823789" MODIFIED="1492678197650" TEXT="5. IF ApplicationContextAware -> setApplicationContext() + контекст приложения."> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1492677923127" ID="ID_1789288633" MODIFIED="1492677932515" TEXT="ApplicationContextAware"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1492092893218" ID="ID_1455511346" MODIFIED="1492678358704" TEXT="setApplicationContext()"> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1491815562734" ID="ID_14608501" MODIFIED="1493296400798" TEXT="6. IF BeanPost Processor -> 
 Object postProcessBeforeInitialization(Object bean, String beanName ) ."> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1492677934391" ID="ID_1946590821" MODIFIED="1492677946635" TEXT="BeanPostProcessor"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1492092907426" ID="ID_1694247496" MODIFIED="1492678360569" TEXT="postProcessBeforeInitialization()"> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1491815562736" ID="ID_206401374" MODIFIED="1493285111582" STYLE="bubble" TEXT="7. IF InitializingBean or <init-method> -> afterPropertiesSet()"> <edge STYLE="bezier" WIDTH="thin"/> <font BOLD="true" NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1491988484191" ID="ID_55327408" MODIFIED="1493287257778" TEXT="@PostConstruct"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1492677949455" ID="ID_1318251609" MODIFIED="1493285020057" TEXT="InitializingBean"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1492678015647" ID="ID_1400628358" MODIFIED="1493285020057" TEXT="<init-method>"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1492092935762" ID="ID_529864605" MODIFIED="1493285020057" TEXT="afterPropertiesSet()"> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1491815562739" ID="ID_106094762" MODIFIED="1493296420607" TEXT="8. IF BeanPostProcessor -> 
 Object postProcessAfterInitialization(Object bean, String beanName) ."> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1492677967071" ID="ID_1169838820" MODIFIED="1492677979715" TEXT="BeanPostProcessor"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1492092954666" ID="ID_1043271984" MODIFIED="1492678368064" TEXT="postProcessAfterInitialization()"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1493285934971" ID="ID_948058384" MODIFIED="1493285940315" TEXT="прокси делаем тут"> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1491815562741" ID="ID_1571924100" MODIFIED="1492678312108" TEXT="9. Компонент готов и будет сохраняться в контексте приложения, пока он не будет уничтожен."> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1491815562743" ID="ID_1731739022" MODIFIED="1493285030761" STYLE="bubble" TEXT="10. IF DisposableBean or <destroy-method> -> destroy()"> <edge STYLE="bezier" WIDTH="thin"/> <font BOLD="true" NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1491989146143" ID="ID_1073670731" MODIFIED="1493287265882" TEXT="@PreDestroy"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1492677985647" ID="ID_99651547" MODIFIED="1493285030761" TEXT="DisposableBean"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1492678004287" ID="ID_459767294" MODIFIED="1493285030761" TEXT="<destroy-method>"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1492092982978" ID="ID_1355501232" MODIFIED="1493285030761" TEXT="destroy()"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1491989440742" ID="ID_82577159" MODIFIED="1491989449915" TEXT="перехват завершения"> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1491989389840" ID="ID_1247856923" MODIFIED="1491989675690" TEXT="AbstractApplicationContext. destroy () не вызывается сам"> <font NAME="SansSerif" SIZE="12"/> </node> <node COLOR="#111111" CREATED="1491989462919" ID="ID_1429391444" MODIFIED="1493295917438" TEXT="context.registerShutdownHook ()"> <node COLOR="#111111" CREATED="1491989678262" ID="ID_1270014377" MODIFIED="1491989691027" TEXT="авто destroy() всех объектов при выходе"/> </node> </node> </node> </node> <node COLOR="#0033ff" CREATED="1491814978907" ID="ID_195551837" MODIFIED="1510754305355" POSITION="left" TEXT="Классы Spring"> <edge STYLE="sharp_bezier" WIDTH="8"/> <font NAME="SansSerif" SIZE="18"/> <node COLOR="#00b439" CREATED="1491814984179" ID="ID_644979381" MODIFIED="1493281711947" TEXT="BeanFactory"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1493282237462" ID="ID_436747283" MODIFIED="1493282297522" TEXT="org.springframework.beans.factory.BeanFactory"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1493282465199" ID="ID_729149174" MODIFIED="1493282785886" TEXT="XmlBeanFactory"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> Этот класс читает из XML: </p> <p> </p> <p> XmlBeanFactory factory = new XmlBeanFactory(new ClassPathResource("Beans.xml")); </p> <p> HelloWorld obj = (HelloWorld) factory.getBean("helloWorld"); </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1493282763134" ID="ID_1563838515" MODIFIED="1493282802129" TEXT="new ClassPathResource("Beans.xml")"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> этот ищет путь к указанному XML </p> </body> </html></richcontent> </node> </node> <node COLOR="#990000" CREATED="1493282467246" ID="ID_1487212704" MODIFIED="1493282470278" TEXT="описание"> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1493282322999" ID="ID_1533955592" MODIFIED="1493282474044" TEXT="базовая низкоуровневая поддержка DI "> <font NAME="SansSerif" SIZE="12"/> </node> <node COLOR="#111111" CREATED="1493282451878" ID="ID_563569993" MODIFIED="1493282474044" TEXT="нужен для поддержки для сторонних фреймворков"> <font NAME="SansSerif" SIZE="12"/> </node> <node COLOR="#111111" CREATED="1493282497446" ID="ID_50702954" MODIFIED="1493282518318" TEXT="ест меньше ресурсов (mobile devices)"/> </node> </node> <node COLOR="#00b439" CREATED="1491814993939" ID="ID_238188569" MODIFIED="1493282098967" TEXT="Context"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> ApplicationContext context = new ClassPathXmlApplicationContext("foo.xml"); </p> <p> GenericXmlApplicationContext ctx = new GenericXmlApplicationContext(); </p> <p> ctx.load("classpath:META-INF/spring/app-context-xml.xml"); </p> <p> ctx. refresh () ; </p> <p> InjectSimple simple = (InjectSimple)ctx.getBean("injectSimple") </p> <p> =================XML=================================== </p> <p> <?xml version = "1.0" encoding = "UTF-8"?> </p> <p> <beans xmlns="http://www.springframework.org/schema/beans" </p> <p>   xmlns:xsi = "http://www.w3.org/2001/XМLSchema-instance" </p> <p>   xmlns:p="http://www.springframework.org/schema/p" </p> <p>   xsi:schemaLocation = "http://www.springframework.org/schema/beans </p> <p>   http://www.springframework.org/schema/beans/spring-beans.xsd"> </p> <p> <bean id="injectSimple" class = "com.apress.prospring4.ch3.xml.InjectSimple" </p> <p>   p:name = "Chris Schaefer" p:age = "32" p:height = "l.778" </p> <p>   p:programmer = "true" </p> <p>   p:ageinSeconds = "l009843200"/> </p> <p> </beans> </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1493282306802" ID="ID_455370906" MODIFIED="1493282309902" TEXT="org.springframework.context.ApplicationContext"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1491815006515" ID="ID_1007616810" MODIFIED="1491815006516" TEXT="ClassPathXmlApplicationContext"> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1491815056875" ID="ID_1330687390" MODIFIED="1491815065671" TEXT="uses CLASSPATH"/> <node COLOR="#111111" CREATED="1493281724254" ID="ID_1834648190" MODIFIED="1493281734899" TEXT="ищет в Classpath"/> </node> <node COLOR="#990000" CREATED="1491815023946" ID="ID_1787021666" MODIFIED="1491815023947" TEXT="FileSystemXmlApplicationContext"> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1493281736383" ID="ID_1554183816" MODIFIED="1493282834947" TEXT="ищет по полному пути"/> </node> <node COLOR="#990000" CREATED="1491815029484" ID="ID_1649659063" MODIFIED="1491815029484" TEXT="XmlWebApplicationContext"> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1493282885958" ID="ID_1941706185" MODIFIED="1493282899398" TEXT="загружает XML из web-приложения"/> </node> <node COLOR="#990000" CREATED="1493285442887" ID="ID_1538213032" MODIFIED="1493285532664" TEXT="AnnotationConfigApplicationContext(“package.name” or Config.class)"> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1493285453084" ID="ID_1811217962" MODIFIED="1493285462279" TEXT="конфиг через аннотации"/> <node COLOR="#111111" CREATED="1493285465363" ID="ID_630120273" MODIFIED="1493285472955" TEXT="указываем пакет, а не файл"/> <node COLOR="#111111" CREATED="1493285502539" ID="ID_1456491391" MODIFIED="1493285509493" TEXT="JavaConfig.class - можно через класс"/> </node> <node COLOR="#990000" CREATED="1493285653915" ID="ID_190008679" MODIFIED="1493285655384" TEXT="GenericGroovyApplicationContext(“context.groovy”)"> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1493285656916" ID="ID_1301178899" MODIFIED="1493285666182" TEXT="внутри не XML, а Groovy"/> </node> <node COLOR="#990000" CREATED="1491915960265" ID="ID_1359205277" MODIFIED="1491915962162" TEXT="GenericXmlApplicationContext"> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1493733513483" ID="ID_1262681326" MODIFIED="1493733517134" TEXT="load + refresh"/> </node> <node COLOR="#990000" CREATED="1491918321501" ID="ID_1951543640" MODIFIED="1491918323897" TEXT="methods"> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1491918383430" ID="ID_35795001" MODIFIED="1493281851822" TEXT="(SimpleTarget) context.getBean("targetl")"/> <node COLOR="#111111" CREATED="1491903578586" ID="ID_1982055129" MODIFIED="1491918327093" TEXT=". getBean ( "renderer", MessageRenderer. class)"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> фабрика класса </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="12"/> </node> <node COLOR="#111111" CREATED="1491918343245" ID="ID_52240880" MODIFIED="1491918343245" TEXT=".load("classpath:META-INF/spring/parent.xml")"/> <node COLOR="#111111" CREATED="1491918358957" ID="ID_30844058" MODIFIED="1491918358957" TEXT=".refresh()"/> <node COLOR="#111111" CREATED="1491918368061" ID="ID_34132227" MODIFIED="1491918368061" TEXT=".setParent(parent)"> <node COLOR="#111111" CREATED="1493733171355" ID="ID_790401869" MODIFIED="1493733180967" TEXT="иерархия Context"/> <node COLOR="#111111" CREATED="1493733362451" ID="ID_898532030" MODIFIED="1493733378095" TEXT="<ref parent="..."/>"/> </node> </node> </node> </node> <node COLOR="#0033ff" CREATED="1491910376243" ID="ID_1717241514" MODIFIED="1492087377855" POSITION="right" TEXT="IoC"> <edge STYLE="sharp_bezier" WIDTH="8"/> <font NAME="SansSerif" SIZE="18"/> <node COLOR="#00b439" CREATED="1491910394613" ID="ID_925971331" MODIFIED="1491910394614" TEXT="Dependency lnjection"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1491910445219" ID="ID_689857629" MODIFIED="1491910449423" TEXT="Constructor DI"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1491910460602" ID="ID_31223826" MODIFIED="1491910464318" TEXT="Setter DI"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1491978517098" ID="ID_1715912498" MODIFIED="1491978521172" TEXT="Method DI"> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1491978541518" ID="ID_1894635024" MODIFIED="1492005209469" TEXT="Lookup Method Injection"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> <bean id="stevie" </p> <p> class="com.springinaction.springidol.Instrumentalist"> </p> <p> <lookup-method name="getInstrument" bean="guitar" /> </p> <p> <property name="song" value="Greensleeves" /> </p> <p> </bean </p> </body> </html></richcontent> <node COLOR="#111111" CREATED="1491978636177" ID="ID_1486578426" MODIFIED="1491978642220" TEXT="<lookup-method>"/> </node> <node COLOR="#111111" CREATED="1491978546025" ID="ID_434405962" MODIFIED="1492004502395" TEXT="Method Replacement"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> <bean id="magicBox" </p> <p> class="com.springinaction.springidol.MagicBoxImpl"> </p> <p> <replaced-method </p> <p> name="getContents" </p> <p> replacer="tigerReplacer" /> </p> <p> </bean> </p> <p> <bean id="tigerReplacer" </p> <p> class="com.springinaction.springidol.TigerReplacer" /> </p> </body> </html></richcontent> <node COLOR="#111111" CREATED="1491979630849" ID="ID_126028361" MODIFIED="1491979634803" TEXT="<replaced-method>"/> </node> </node> </node> <node COLOR="#00b439" CREATED="1491910399388" ID="ID_556919795" MODIFIED="1491910399389" TEXT="Dependency Lookup"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1491910411291" ID="ID_1134305941" MODIFIED="1491910411292" TEXT="Dependency Pull"> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1491910598194" ID="ID_567372366" MODIFIED="1491910611246" TEXT="извлечение из реестра"/> </node> <node COLOR="#990000" CREATED="1491910419485" ID="ID_1349937002" MODIFIED="1491910432911" TEXT="Contextualized Dependency Lookup (CDL)"> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1491911034457" ID="ID_1893023152" MODIFIED="1491911041654" TEXT="поиск в контейнере"/> </node> </node> <node COLOR="#00b439" CREATED="1492081492021" ID="ID_241469255" MODIFIED="1492081712751" TEXT="паттерн Inversion of control (контейнер)"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1492081543871" ID="ID_417877613" MODIFIED="1492081543871" TEXT="идея этого паттерна заключается в устранении зависимости компонентов или классов приложения от конкретных реализаций"> <font NAME="SansSerif" SIZE="14"/> </node> </node> </node> <node COLOR="#0033ff" CREATED="1491895757696" ID="ID_706773051" MODIFIED="1491895757696" POSITION="right" TEXT="SpEL"> <edge STYLE="sharp_bezier" WIDTH="8"/> <font NAME="SansSerif" SIZE="18"/> <node COLOR="#00b439" CREATED="1491895767049" ID="ID_863722021" MODIFIED="1491895772403" TEXT="Spring Expression Language"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1492000628256" ID="ID_684515022" MODIFIED="1492000820444" TEXT="Литералы"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> <property name="message" value="The value is #{5}"/> </p> <p> <property name="frequency" value="#{89.7}"/> </p> <p> <property name="capacity" value="#{1e4}"/> </p> <p> <property name="name" value="#{'Chuck'}"/> </p> <p> <property name='name' value='#{"Chuck"}'/> </p> <p> <property name="enabled" value="#{false}"/> </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1492000658728" ID="ID_837682447" MODIFIED="1492000658728" TEXT="<property name="count" value="#{5}"/>"> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1492000812584" ID="ID_283949681" MODIFIED="1492001117997" TEXT="Компоненты"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> <property name="instrument" value="#{saxophone}"/> == <property name="instrument" ref="saxophone"/> </p> <p> ------------карл поет песню кенни------------- </p> <p> <bean id="carl" </p> <p> class="com.springinaction.springidol.Instrumentalist"> </p> <p> <property name="song" value="#{kenny.song}" /> </p> <p> </bean> </p> <p> ----------большие буквы, если не NULL-------------- </p> <p> <property name="song" value="#{songSelector.selectSong()?.toUpperCase()}"/> </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1492001256256" ID="ID_1725023024" MODIFIED="1492001258540" TEXT="T()"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1492001212687" ID="ID_1758704870" MODIFIED="1492001261025" TEXT="static методы"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> <property name="randomNumber" value="#{T(java.lang.Math).random()}"/> </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1492001235752" ID="ID_282668846" MODIFIED="1492001262767" TEXT="static переменные"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> <property name="multiplier" value="#{T(java.lang.Math).PI}"/> </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1492001318863" ID="ID_1629710522" MODIFIED="1492001467525" TEXT="Операции"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1492001353623" ID="ID_1431023890" MODIFIED="1492001421523" TEXT="математические +, -, *, /, %, ^"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> <property name="area" value="#{T(java.lang.Math).PI * circle.radius ^ 2}"/> </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1492001468791" ID="ID_1842343401" MODIFIED="1492001600075" TEXT="Сравнение <, >, ==, <=, >=, lt, gt, eq, le, ge"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> Равно == eq </p> <p> Меньше чем < lt </p> <p> Меньше или равно <= le </p> <p> Больше чем > gt </p> <p> Больше или равно >= ge </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1492001490992" ID="ID_397157826" MODIFIED="1492001499931" TEXT="Логические and, or, not, !"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1492001504359" ID="ID_814505581" MODIFIED="1492001928275" TEXT="Условные"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> ?: (трехместный), </p> <p> <property name="song" </p> <p> value="#{kenny.song != null ? kenny.song : 'Greensleeves'}"/> </p> <p> --------------------------------------------- </p> <p> ?: (Элвис - похож на прическу) </p> <p> <property name="song" value="#{kenny.song ?: 'Greensleeves'}"/> </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1492001528863" ID="ID_819437729" MODIFIED="1492002036803" TEXT="Регулярные выражения"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> matches </p> <p> -------------- </p> <p> <property name="validEmail" value= </p> <p> "#{admin.email matches '[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.com'}"/> </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1492002094896" ID="ID_689895657" MODIFIED="1492002098043" TEXT="Коллекции"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1492002217175" ID="ID_77907190" MODIFIED="1492002268587" TEXT="Доступ"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> <property name="chosenCity" value="#{cities[2]}"/> </p> <p> ---------random элемент-------------------------------------- </p> <p> <property name="chosenCity" </p> <p> value="#{cities[T(java.lang.Math).random() * cities.size()]}"/> </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1492002516799" ID="ID_1037805250" MODIFIED="1492002558475" TEXT="оператор []"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> <property name="accessToken" value="#{settings['twitter.accessToken']}"/> </p> <p> <property name="homePath" value="#{systemEnvironment['HOME']}"/> </p> <p> <property name="homePath" value="#{systemProperties['application.home']}"/> </p> <p> 'This is a test'[3] - вернёт 's' </p> </body> </html></richcontent> </node> </node> <node COLOR="#990000" CREATED="1492002593007" ID="ID_325665311" MODIFIED="1492002648170" TEXT="Выборка"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> <property name="bigCities" value="#{cities.?[population gt 100000]}"/> - только cities, где больше-равно 1е5 человек </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1492002656958" ID="ID_1542974567" MODIFIED="1492002663970" TEXT=".?[ ]"/> <node COLOR="#111111" CREATED="1492002705783" ID="ID_1906680965" MODIFIED="1492002705783" TEXT=".^[]"> <node COLOR="#111111" CREATED="1492002718727" ID="ID_674973187" MODIFIED="1492002723579" TEXT="первый"/> </node> <node COLOR="#111111" CREATED="1492002711831" ID="ID_1300401819" MODIFIED="1492002711831" TEXT=".$[]"> <node COLOR="#111111" CREATED="1492002724974" ID="ID_1982853156" MODIFIED="1492002729291" TEXT="последний элемент"/> </node> </node> <node COLOR="#990000" CREATED="1492002811207" ID="ID_972208116" MODIFIED="1492002891450" TEXT="Отображение"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> <property name="cityNames" value="#{cities.![name]}"/> - список названий из городов </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1492002822887" ID="ID_1643364866" MODIFIED="1492002870025" TEXT=".![ ]"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> <property name="cityNames" value="#{cities.![name]}"/> </p> </body> </html></richcontent> </node> </node> <node COLOR="#990000" CREATED="1492003090703" ID="ID_1165011747" MODIFIED="1492003095858" TEXT="Комбинации"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> <property name="cityNames" </p> <p> value="#{cities.?[population gt 100000].![name + ', ' + state]}"/> </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> </node> </node> </node> <node COLOR="#0033ff" CREATED="1491916884310" ID="ID_1238678373" MODIFIED="1609582088602" POSITION="left" TEXT="XML"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> то, что нужно может меняться без компиляции (динамизм) </p> <p> +можно хранить как внешний ресурс </p> </body> </html></richcontent> <edge STYLE="sharp_bezier" WIDTH="8"/> <font NAME="SansSerif" SIZE="18"/> <node COLOR="#00b439" CREATED="1493794590831" ID="ID_325968940" MODIFIED="1494927532733" TEXT="<context: property-placeholder>"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1493794598830" ID="ID_412321004" MODIFIED="1493794657450" TEXT="где лежит файл свойств для context"> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1491855353091" ID="ID_1769250258" MODIFIED="1493298410734" TEXT="<constuctor-arg>"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> параметры для конструктора - будет выбран конструктор не по умолчанию </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1491916908158" ID="ID_147101707" MODIFIED="1491996074008" TEXT="внедрение через constructor"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> <constructor-arg value="15" /> </p> <p> будет вызван конструктор с параметром 15 </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1491997315802" ID="ID_249788342" MODIFIED="1491997375159" TEXT="<factory-method>"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> Бин из фабрики (без конструктора) </p> <p> <bean id="theStage" </p> <p> class="com.springinaction.springidol.Stage" </p> <p> factory-method="getInstance" /> </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1492066364899" ID="ID_1320289026" MODIFIED="1492066373376" TEXT="вызывает getInstance"> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1491917146393" ID="ID_64884444" MODIFIED="1491917146393" TEXT="<ref>."> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1492066386692" ID="ID_1961401214" MODIFIED="1492066399134" TEXT="ссылочное значение"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1491917433295" ID="ID_1218609056" MODIFIED="1491917433295" TEXT="local"> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1491917445934" ID="ID_569210249" MODIFIED="1491917455201" TEXT="не принимает во внимание псевдонимы"/> </node> <node COLOR="#990000" CREATED="1491917484054" ID="ID_1432783306" MODIFIED="1491917484054" TEXT="bean"> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1491917485894" ID="ID_1970946343" MODIFIED="1491917498521" TEXT="по любому имени или из другого XML"/> </node> </node> <node COLOR="#00b439" CREATED="1491918497062" ID="ID_1370931604" MODIFIED="1500021783105" TEXT="с:_0"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> <bean id = "injectBeanParent" class = "java.lang.String" с:_0="Bean In Parent"/> </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1491918513406" ID="ID_164170873" MODIFIED="1491918518113" TEXT="просто значение"> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1491918536517" ID="ID_57898887" MODIFIED="1493283497405" TEXT="<bean>"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> <bean id = "injectBean" class = "java.lang.String"> </p> <p> объявляет бин класса String с конструктором по умолчанию </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1493283208862" ID="ID_1504504141" MODIFIED="1493283321046" TEXT="name and/or id"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1493283196806" ID="ID_1359755381" MODIFIED="1493283937037" TEXT="class"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> <bean id="..." class="..." /> </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1493283234990" ID="ID_1351573634" MODIFIED="1493284639596" TEXT="scope"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> <bean id="..." class="..." scope="..."> </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1492679120141" ID="ID_1013457502" MODIFIED="1493283278486" TEXT="singleton"> <font NAME="SansSerif" SIZE="12"/> <node COLOR="#111111" CREATED="1493284479475" ID="ID_1227190040" MODIFIED="1493284485136" TEXT="single per IoC"/> <node COLOR="#111111" CREATED="1493284758532" ID="ID_1054217646" MODIFIED="1493284767160" TEXT="хранится в кэше спринга"/> </node> <node COLOR="#111111" CREATED="1492679125325" ID="ID_1859907209" MODIFIED="1493283285686" TEXT="prototype"> <font NAME="SansSerif" SIZE="12"/> <node COLOR="#111111" CREATED="1491987018491" ID="ID_1170646828" MODIFIED="1493283246711" TEXT="нет события перед уничтожением"> <font NAME="SansSerif" SIZE="12"/> </node> <node COLOR="#111111" CREATED="1493284772420" ID="ID_1715314231" MODIFIED="1493284833352" TEXT="getbean вернет новый объект"/> </node> <node COLOR="#111111" CREATED="1491997639099" ID="ID_1289467409" MODIFIED="1493283302990" TEXT="request"> <font NAME="SansSerif" SIZE="12"/> <node COLOR="#111111" CREATED="1493284542868" ID="ID_91269605" MODIFIED="1493284553182" TEXT="в течение HTTP запроса"/> </node> <node COLOR="#111111" CREATED="1491997644162" ID="ID_1827382705" MODIFIED="1493283306518" TEXT="session"> <font NAME="SansSerif" SIZE="12"/> <node COLOR="#111111" CREATED="1493284554460" ID="ID_1651605768" MODIFIED="1493284560492" TEXT="в течение HTTP сессии"/> </node> <node COLOR="#111111" CREATED="1493734567786" ID="ID_1423171559" MODIFIED="1493734571262" TEXT="thread"> <node COLOR="#111111" CREATED="1493734571866" ID="ID_356508180" MODIFIED="1493734584854" TEXT="свой объект каждому потоку"/> </node> <node COLOR="#111111" CREATED="1491997648962" ID="ID_223116507" MODIFIED="1493283309294" TEXT="global-session"> <font NAME="SansSerif" SIZE="12"/> <node COLOR="#111111" CREATED="1493284564093" ID="ID_300814067" MODIFIED="1493284571156" TEXT="в течение глобальной сессии"/> </node> </node> <node COLOR="#990000" CREATED="1493283355269" ID="ID_1559955276" MODIFIED="1493283369757" TEXT="constructor-arg"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1493297672912" ID="ID_1595101638" MODIFIED="1493298386351" TEXT="аргументы одного типа: порядок, как в xml"/> <node COLOR="#111111" CREATED="1493297746600" ID="ID_809759312" MODIFIED="1493298398973" TEXT="порядок по индексу"/> <node COLOR="#111111" CREATED="1493298442167" ID="ID_812415646" MODIFIED="1493300244098" TEXT="xmlns:c"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> xmlns:p="http://www.springframework.org/schema/c" </p> </body> </html></richcontent> <node COLOR="#111111" CREATED="1493731806604" ID="ID_795447241" MODIFIED="1493731810608" TEXT="c_0 - индекс"/> </node> </node> <node COLOR="#990000" CREATED="1491855337310" ID="ID_46049599" MODIFIED="1493283476429" TEXT="<property>"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> ==============простых значений============ </p> <p> <bean id="kenny" </p> <p> class="com.springinaction.springidol.Instrumentalist"> </p> <p> <property name="song" value="Jingle Bells" /> </p> <p> </bean> </p> <p> ==============объектов================== </p> <p> <bean id="kenny2" </p> <p> class="com.springinaction.springidol.Instrumentalist"> </p> <p> <property name="song" value="Jingle Bells" /> </p> <p> <property name="instrument" ref="saxophone" /> </p> <p> </bean> </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1491916091681" ID="ID_1389074029" MODIFIED="1493283023481"> <richcontent TYPE="NODE"><html> <head> </head> <body> <p> xmlns:p </p> </body> </html></richcontent> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> xmlns:p="http://www.springframework.org/schema/p" </p> <p> ****************** </p> <p> <bean id="kenny" class="com.springinaction.springidol.Instrumentalist" </p> <p> p:song = "Jingle Bells" </p> <p> p:instrument-ref = "saxophone" /> </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="12"/> </node> <node COLOR="#111111" CREATED="1491916896694" ID="ID_1726697081" MODIFIED="1493283023482" TEXT="внедрение через setter"> <font NAME="SansSerif" SIZE="12"/> </node> <node COLOR="#111111" CREATED="1493295867810" ID="ID_907081361" MODIFIED="1493295870606" TEXT="value"> <node COLOR="#111111" CREATED="1493295874170" ID="ID_896122908" MODIFIED="1493295876653" TEXT="литерал"/> </node> <node COLOR="#111111" CREATED="1493295871234" ID="ID_970063233" MODIFIED="1493295873198" TEXT="ref"> <node COLOR="#111111" CREATED="1493295877554" ID="ID_1010981883" MODIFIED="1493295879406" TEXT="объект"/> </node> </node> <node COLOR="#990000" CREATED="1491985346509" ID="ID_1062791517" MODIFIED="1493283497405" TEXT="autowire"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> <bean id = "targetConstructor" autowire = "constructor" </p> <p> class = "com.apress.prospring4.ch3.xml.Target" lazy-init = "true"/> </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1491985108212" ID="ID_1017947561" MODIFIED="1493301438887" TEXT="byName"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="12"/> </node> <node COLOR="#111111" CREATED="1491985110558" ID="ID_618098626" MODIFIED="1493301438888" TEXT="bуТуре"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="12"/> </node> <node COLOR="#111111" CREATED="1491985112660" ID="ID_399766404" MODIFIED="1493301438889" TEXT="constructor"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="12"/> <node COLOR="#111111" CREATED="1493301647236" ID="ID_799522615" MODIFIED="1493301652713" TEXT="such as byType"/> </node> <node COLOR="#111111" CREATED="1493300781837" ID="ID_499195520" MODIFIED="1493301438890" TEXT="autodetect"> <font NAME="SansSerif" SIZE="12"/> <node COLOR="#111111" CREATED="1493300789846" ID="ID_1095007114" MODIFIED="1493300795186" TEXT="first by constructor"/> <node COLOR="#111111" CREATED="1493300799581" ID="ID_757468135" MODIFIED="1493300809737" TEXT="then byType"/> </node> <node COLOR="#111111" CREATED="1493795303151" ID="ID_1213954401" MODIFIED="1493795303151" TEXT="required"/> <node COLOR="#111111" CREATED="1493795370869" ID="ID_817651760" MODIFIED="1493795370869" TEXT="@Qualifier"/> </node> <node COLOR="#990000" CREATED="1493283559294" ID="ID_947503743" MODIFIED="1493283563497" TEXT="lazy-init"> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1493283651501" ID="ID_290238062" MODIFIED="1493283676997" TEXT="создаем сразу или при первом запросе"/> </node> <node COLOR="#990000" CREATED="1493283715837" ID="ID_1359902708" MODIFIED="1493283990249" TEXT="init-method="...""> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1493283788629" ID="ID_176423369" MODIFIED="1493283799457" TEXT="определяем метод при создании"/> <node COLOR="#111111" CREATED="1493296040917" ID="ID_1005008883" MODIFIED="1493296049293" TEXT="default-init-method in main <beans>"/> </node> <node COLOR="#990000" CREATED="1493283751876" ID="ID_1079858054" MODIFIED="1493284010540" TEXT="destroy-method="...""> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1493283800796" ID="ID_1308483849" MODIFIED="1493283808137" TEXT="метод при уничтожении"/> <node COLOR="#111111" CREATED="1493296069506" ID="ID_892571032" MODIFIED="1493296081830" TEXT="default-destroy-method in main <beans>"/> </node> <node COLOR="#990000" CREATED="1491986314420" ID="ID_1305073774" MODIFIED="1493296626492" TEXT="parent="inheritParent""> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> <bean id="inheritParent" class="com.apress.prospring4.ch3.xml.SimpleBean" </p> <p> p:name="Chris Schaefer" p:age="32"/> </p> <p> <bean id="inheritChild" class="com.apress.prospring4.ch3.xml.SimpleBean" </p> <p> parent="inheritParent" р:аgе="ЗЗ"/> </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1493296935016" ID="ID_305486547" MODIFIED="1493297017528" TEXT="abstract="true""> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> <bean id="beanTeamplate" abstract="true"> </p> <p>     <property name="message1" value="Hello World!"/> </p> <p>     <property name="message2" value="Hello Second World!"/> </p> <p>     <property name="message3" value="Namaste India!"/> </p> <p> </bean> </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1492003367550" ID="ID_1085254898" MODIFIED="1493297041121" TEXT="abstract"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> <bean id="baseSaxophonist" </p> <p> class="com.springinaction.springidol.Instrumentalist" </p> <p> abstract="true"> </p> <p> <property name="instrument" ref="saxophone" /> </p> <p> <property name="song" value="Jingle Bells" /> </p> <p> </bean> </p> <p> ------------------------------ </p> <p> <bean id="kenny" parent="baseSaxophonist" /> </p> <p> <bean id="david" parent="baseSaxophonist" /> </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="12"/> </node> </node> <node COLOR="#990000" CREATED="1491984320124" ID="ID_961900194" MODIFIED="1493283353796" TEXT="depends-on"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> <bean id="beanA" class = "com.apress.prospring4.ch3.BeanA" depends-on = "beanB"/> </p> </body> </html></richcontent> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1491981281806" ID="ID_22331926" MODIFIED="1493283366427" TEXT="<alias>"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> <bean id="namel" name="name2 name3,name4;name5" class = "java.lang.String"/> </p> <p> <alias name = "namel" alias = "nameб"/> </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1491981419167" ID="ID_351499803" MODIFIED="1491981419167" TEXT=". getAliases (String)"> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1491998549409" ID="ID_1223381725" MODIFIED="1491998632638" TEXT="внутренние компоненты"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> ==========через методы======================= </p> <p> <bean id="kenny" </p> <p> class="com.springinaction.springidol.Instrumentalist"> </p> <p> <property name="song" value="Jingle Bells" /> </p> <p> <property name="instrument"> </p> <p> <bean class="org.springinaction.springidol.Saxophone" /> </p> <p> </property> </p> <p> </bean> </p> <p> =========через конструктор==================== </p> <p> <bean id="duke" </p> <p> class="com.springinaction.springidol.PoeticJuggler"> </p> <p> <constructor-arg value="15" /> </p> <p> <constructor-arg> </p> <p>        <bean class="com.springinaction.springidol.Sonnet29" /> </p> <p> </constructor-arg> </p> <p> </bean> </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1492000531984" ID="ID_88426197" MODIFIED="1492679200487" TEXT="NULL"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> <property name="someNonNullProperty"><null/></property> </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1491998875633" ID="ID_1144253455" MODIFIED="1493300256575" TEXT="коллекции"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1492002153647" ID="ID_1697582651" MODIFIED="1493300263706" TEXT="<util:list id="cities">"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1492002155335" ID="ID_438195276" MODIFIED="1493300261288" TEXT="создает list"> <font NAME="SansSerif" SIZE="12"/> </node> <node COLOR="#111111" CREATED="1493733816834" ID="ID_565624668" MODIFIED="1493733832863" TEXT="xmlns:util"/> </node> <node COLOR="#990000" CREATED="1491998883049" ID="ID_1625979691" MODIFIED="1493300256575" TEXT="<list>"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> <bean id="hank" </p> <p> class="com.springinaction.springidol.OneManBand"> </p> <p> <property name="instruments"> </p> <p> <list> </p> <p>       <ref bean="guitar" /> </p> <p>       <ref bean="cymbal" /> </p> <p>       <ref bean="harmonica" /> </p> <p> </list> </p> <p> </property> </p> <p> </bean> </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1491999145360" ID="ID_730086324" MODIFIED="1493300256576" TEXT="+array"> <font NAME="SansSerif" SIZE="12"/> </node> <node COLOR="#111111" CREATED="1493300398018" ID="ID_1257543849" MODIFIED="1493300420546" TEXT="<value>...</value>"/> <node COLOR="#111111" CREATED="1493300560878" ID="ID_1270116255" MODIFIED="1493300568018" TEXT="<ref bean="..."/>"/> </node> <node COLOR="#990000" CREATED="1491998886850" ID="ID_678911532" MODIFIED="1493300519105" TEXT="<set>"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> <bean id="hank" </p> <p> class="com.springinaction.springidol.OneManBand"> </p> <p> <property name="instruments"> </p> <p> <set> </p> <p> <ref bean="guitar" /> </p> <p> <ref bean="cymbal" /> </p> <p> <ref bean="harmonica" /> </p> <p> <ref bean="harmonica" /> </p> <p> </set> </p> <p> </property> </p> <p> </bean </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1491998889545" ID="ID_1733935575" MODIFIED="1493300256577" TEXT="<map>"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> <bean id="hank" class="com.springinaction.springidol.OneManBand"> </p> <p> <property name="instruments"> </p> <p> <map> </p> <p>   <entry key="GUITAR" value-ref="guitar" /> </p> <p>   <entry key="CYMBAL" value-ref="cymbal" /> </p> <p>   <entry key="HARMONICA" value-ref="harmonica" /> </p> <p> </map> </p> <p> ==================************ </p> <p> key Определяет ключ элемента отображения как строку </p> <p> key-ref Определяет ключ элемента отображения как ссылку на компонент </p> <p> в контексте Spring </p> <p> value Определяет значение элемента отображения как строку </p> <p> value-ref Определяет значение элемента отображения как ссылку </p> <p> на компонент в контексте Spring </p> <p> </property> </p> <p> </bean> </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1492000188889" ID="ID_1087336397" MODIFIED="1493733557303" TEXT="entry key / key-ref"> <font NAME="SansSerif" SIZE="12"/> </node> <node COLOR="#111111" CREATED="1492000196496" ID="ID_311435243" MODIFIED="1493300445387" TEXT="value / value-ref"> <font NAME="SansSerif" SIZE="12"/> </node> </node> <node COLOR="#990000" CREATED="1491998891859" ID="ID_517302196" MODIFIED="1493300263712" TEXT="<props>"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> Properties - коллеция имя/значение <String, String> </p> <p> <bean id="hank" class="com.springinaction.springidol.OneManBand"> </p> <p> <property name="instruments"> </p> <p>   <props> </p> <p>     <prop key="GUITAR">STRUM STRUM STRUM</prop> </p> <p>     <prop key="CYMBAL">CRASH CRASH CRASH</prop> </p> <p>     <prop key="HARMONICA">HUM HUM HUM</prop> </p> <p>   </props> </p> <p> </property> </p> <p> </bean> </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1493300290974" ID="ID_668715298" MODIFIED="1493300300579" TEXT="<String, String>"/> </node> <node COLOR="#990000" CREATED="1493300625664" ID="ID_245458847" MODIFIED="1493300625664" TEXT="<null/>"> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1493300627245" ID="ID_601448586" MODIFIED="1493300633522" TEXT="set NULL value"/> </node> </node> </node> <node COLOR="#0033ff" CREATED="1491916947750" ID="ID_99255929" MODIFIED="1493287400690" POSITION="left" TEXT="Аннотации"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> все наши классы, к-е должны быть бинами Spring, объявляем и настраиваем аннотациями </p> </body> </html></richcontent> <edge STYLE="sharp_bezier" WIDTH="8"/> <font NAME="SansSerif" SIZE="18"/> <node COLOR="#00b439" CREATED="1493730963719" ID="ID_1708284087" MODIFIED="1493730976409" TEXT="<context:exclude-filter type = "assignable" expression="..pack.."/>"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1493730978261" ID="ID_876098432" MODIFIED="1493730993577" TEXT="исключить / включить пачки"> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1493730812969" ID="ID_458679893" MODIFIED="1493730828234" TEXT="<context:component-scan base-package="..." />"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1493730999012" ID="ID_1396702842" MODIFIED="1493731006521" TEXT="скан на аннотации"> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1491988603936" ID="ID_892769795" MODIFIED="1493733887606" TEXT="добавить <context: annotation-config/>"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1492005656006" ID="ID_1121435798" MODIFIED="1492005658261" TEXT="<aop:spring-configured />"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1492005817253" ID="ID_1063645081" MODIFIED="1492005818034" TEXT="-javaagent:/path/to/aspectjweaver.jar"> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1491916957095" ID="ID_997964560" MODIFIED="1493732816880" TEXT="@Component("bean")"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> конфигурация </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1493732793228" ID="ID_624034505" MODIFIED="1493732802047" TEXT="хранит конфиг приложения"> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1491916963184" ID="ID_48665626" MODIFIED="1493731236353" TEXT="@Service("bean")"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> бизнес-службу </p> <p> @Service("rnessageRenderer") </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1493731237468" ID="ID_673869198" MODIFIED="1493731253793" TEXT="бин-служба с указанным именем"> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1493731389374" ID="ID_1800826523" MODIFIED="1493731400934" TEXT="@Resource (name = "bean")"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1493731510844" ID="ID_349730321" MODIFIED="1493731520341" TEXT="как @Autowired"> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1493732506421" ID="ID_331201478" MODIFIED="1493732511213" TEXT="@Value("Chris Schaefer")"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1493732512284" ID="ID_247377461" MODIFIED="1493732522983" TEXT="полю будет присвоено значение в скобках"> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1491918125837" ID="ID_423632446" MODIFIED="1493795291217" TEXT="@Autowired"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1491985108212" ID="ID_410097129" MODIFIED="1492086930344" TEXT="byName"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1491985110558" ID="ID_1489277969" MODIFIED="1492086930344" TEXT="bуТуре"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1491985112660" ID="ID_207334314" MODIFIED="1492086930344" TEXT="constructor"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1493301647236" ID="ID_266925397" MODIFIED="1493301652713" TEXT="such as byType"/> </node> <node COLOR="#990000" CREATED="1493300781837" ID="ID_850478116" MODIFIED="1493300784770" TEXT="autodetect"> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1493300789846" ID="ID_525983625" MODIFIED="1493300795186" TEXT="first by constructor"/> <node COLOR="#111111" CREATED="1493300799581" ID="ID_1752040437" MODIFIED="1493300809737" TEXT="then byType"/> </node> <node COLOR="#990000" CREATED="1491985118052" ID="ID_875971519" MODIFIED="1493300761188" TEXT="no"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1491985114941" ID="ID_1040163562" MODIFIED="1493300762397" TEXT="default"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="12"/> </node> </node> <node COLOR="#990000" CREATED="1493795285286" ID="ID_183350931" MODIFIED="1493795285286" TEXT="required"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1493795362902" ID="ID_422265185" MODIFIED="1493795362903" TEXT="@Qualifier"> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1492005578245" ID="ID_1600884684" MODIFIED="1493730814556" TEXT="@Configurable"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> package com.springinaction.springidol; </p> <p> import org.springframework.beans.factory.annotation.Configurable; </p> <p> @Configurable("pianist") </p> <p> public class Instrumentalist implements Performer { </p> <p> ... </p> <p> } </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1492005591533" ID="ID_25031207" MODIFIED="1492005604816" TEXT="если объект создает не Spring"> <font NAME="SansSerif" SIZE="14"/> </node> </node> </node> <node COLOR="#0033ff" CREATED="1493287125434" ID="ID_334410048" MODIFIED="1609582684131" POSITION="left" TEXT="JavaConfig"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> prototype лучше объявлять тут, дабы избежать рефлексии </p> <p> сторонние бины и сложная конфигурация </p> </body> </html></richcontent> <edge STYLE="sharp_bezier" WIDTH="8"/> <font NAME="SansSerif" SIZE="18"/> <node COLOR="#00b439" CREATED="1493794358868" ID="ID_754861831" MODIFIED="1493794358872" TEXT="@Configuration"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1493794366679" ID="ID_183048859" MODIFIED="1493794366680" TEXT="@Bean"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1493794531119" ID="ID_425533488" MODIFIED="1493794531119" TEXT="@Bean(name = "messageRenderer")"> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1493794473681" ID="ID_1549361105" MODIFIED="1493794473682" TEXT="@Autowired"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1493795298006" ID="ID_1563347905" MODIFIED="1493795298006" TEXT="required"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1493795359630" ID="ID_1426630744" MODIFIED="1493795359630" TEXT="@Qualifier"> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1493794481335" ID="ID_1271932399" MODIFIED="1493794481336" TEXT="@ImportResource(value = "classpath:META-INF/spring/app-context-xml.xml")"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1493794773814" ID="ID_1788485752" MODIFIED="1493794799530" TEXT="@Import("...")"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1493794487679" ID="ID_230816562" MODIFIED="1493794487680" TEXT="@PropertySource(value = "classpath:message.properties")"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1493794627910" ID="ID_420592540" MODIFIED="1493794638138" TEXT="файл свойств для context"> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1493794496767" ID="ID_1397922338" MODIFIED="1493794496768" TEXT="@ComponentScan(basePackages = {"com.apress.prospring4.ch4"})"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1493794504006" ID="ID_938914879" MODIFIED="1609582707019" TEXT="@EnableTransactionManagement"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1493794513567" ID="ID_39755561" MODIFIED="1493794513567" TEXT="@Lazy(value = true)"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1493794536464" ID="ID_541787537" MODIFIED="1493794536464" TEXT="@Scope(value = "prototype")"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1493794543471" ID="ID_1142314047" MODIFIED="1493794543471" TEXT="@DependsOn(value = "messageProvider")"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1493794740334" ID="ID_471478772" MODIFIED="1493794744754" TEXT="порядок загрузки"> <font NAME="SansSerif" SIZE="14"/> </node> </node> </node> <node COLOR="#0033ff" CREATED="1493794832862" ID="ID_1750682219" MODIFIED="1493795100963" POSITION="left" TEXT="JSR-330"> <edge STYLE="sharp_bezier" WIDTH="8"/> <font NAME="SansSerif" SIZE="18"/> <node COLOR="#00b439" CREATED="1493795100079" ID="ID_41718447" MODIFIED="1493795102430" TEXT="javax.inject"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1493795545669" ID="ID_1936877179" MODIFIED="1493795565553" TEXT="лучше использовать Spring аннотации - они мощнее"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1493794925111" ID="ID_1608737316" MODIFIED="1493794925112" TEXT="@Narned("rnessageProvider")"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1493794926773" ID="ID_240441890" MODIFIED="1493794930402" TEXT="bean"> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1493795032125" ID="ID_624710802" MODIFIED="1493795074082" TEXT="@Inject"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> @Inject </p> <p> @Named ( "messageProvider") </p> </body> </html></richcontent> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1493795033742" ID="ID_1732796339" MODIFIED="1493795335010" TEXT="внедрение через поле / autowired"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1493795047893" ID="ID_294986168" MODIFIED="1493795047894" TEXT="@Narned ( "rnessage")"> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1493795061951" ID="ID_1997546371" MODIFIED="1493795061951" TEXT="@Singleton"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1493795107854" ID="ID_455997856" MODIFIED="1493795185977" TEXT="не в Spring по умолчанию prototype"> <font NAME="SansSerif" SIZE="14"/> </node> </node> </node> <node COLOR="#0033ff" CREATED="1493287131306" ID="ID_429258473" MODIFIED="1493287530682" POSITION="left" TEXT="GroovyConfig"> <richcontent TYPE="NOTE"><html> <head> </head> <body> <p> внешний скрипт, как XML </p> <p> заменить всё, кроме аннотаций </p> </body> </html></richcontent> <edge STYLE="sharp_bezier" WIDTH="8"/> <font NAME="SansSerif" SIZE="18"/> <node COLOR="#00b439" CREATED="1493795732214" ID="ID_1392212910" MODIFIED="1493795734870" TEXT="org.codehaus.groovy"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1493795542294" ID="ID_662139316" MODIFIED="1493795542294" TEXT="beans. groovy"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1493795592686" ID="ID_1559389548" MODIFIED="1493795592686" TEXT="beans"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1493795619933" ID="ID_287313806" MODIFIED="1493795624929" TEXT="бин-контейнер"> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1493795612892" ID="ID_1324876215" MODIFIED="1493795655249" TEXT="имя бина(класс, поля)"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1493795629998" ID="ID_1635614369" MODIFIED="1493795629998" TEXT="contact(Contact, firstName: 'Chris', lastName: 'Schaefer', age: 32)"> <font NAME="SansSerif" SIZE="14"/> </node> </node> </node> <node COLOR="#0033ff" CREATED="1492005941133" ID="ID_1034648834" MODIFIED="1493795571682" POSITION="left" TEXT="PropertyEditor"> <edge STYLE="sharp_bezier" WIDTH="8"/> <font NAME="SansSerif" SIZE="18"/> <node COLOR="#00b439" CREATED="1492005946485" ID="ID_266630346" MODIFIED="1492005946485" TEXT="PropertyEditorSupport"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1492005952670" ID="ID_407331470" MODIFIED="1492005952670" TEXT="getAsText()"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1492005958877" ID="ID_1855418420" MODIFIED="1492005958877" TEXT="setAsText(String value)"> <font NAME="SansSerif" SIZE="14"/> </node> </node> <node COLOR="#00b439" CREATED="1492006026574" ID="ID_1703824602" MODIFIED="1492006026574" TEXT="ClassEditor"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1492006029653" ID="ID_1347083939" MODIFIED="1492006029653" TEXT="CustomDateEditor"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1492006045981" ID="ID_1120386229" MODIFIED="1492006045981" TEXT="FileEditor"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1492006050133" ID="ID_138323975" MODIFIED="1492006050133" TEXT="LocaleEditor"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1492006057885" ID="ID_835218185" MODIFIED="1492006057885" TEXT="StringArrayPropertyEditor"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1492006063301" ID="ID_1144800358" MODIFIED="1492006063301" TEXT="StringTrimmerEditor"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1492006065845" ID="ID_646737" MODIFIED="1492006065845" TEXT="URLEditor"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> </node> <node COLOR="#0033ff" CREATED="1491978576608" ID="ID_1022137028" MODIFIED="1491978577620" POSITION="left" TEXT="CGLIB"> <edge STYLE="sharp_bezier" WIDTH="8"/> <font NAME="SansSerif" SIZE="18"/> <node COLOR="#00b439" CREATED="1491978581096" ID="ID_926163431" MODIFIED="1491978589668" TEXT="изменение байткода"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> <node COLOR="#00b439" CREATED="1491978590056" ID="ID_651004742" MODIFIED="1491978594044" TEXT="рефлексия"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> </node> </node> <node COLOR="#0033ff" CREATED="1493287151243" ID="ID_1377033258" MODIFIED="1493287155665" POSITION="right" TEXT="Теория"> <edge STYLE="sharp_bezier" WIDTH="8"/> <font NAME="SansSerif" SIZE="18"/> <node COLOR="#00b439" CREATED="1491893796978" ID="ID_1048892447" MODIFIED="1493287160587" TEXT="Преимущества"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1491893809109" ID="ID_773871217" MODIFIED="1493287160587" TEXT="Сокращение объема связующеrо кода"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> <icon BUILTIN="full-1"/> </node> <node COLOR="#990000" CREATED="1491893814353" ID="ID_634536432" MODIFIED="1493287160587" TEXT="Упрощенная конфигурация приложения"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> <icon BUILTIN="full-2"/> </node> <node COLOR="#990000" CREATED="1491893826616" ID="ID_1552174328" MODIFIED="1493287160587" TEXT="Управление общими зависимостями в единственном репозитории"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> <icon BUILTIN="full-3"/> </node> <node COLOR="#990000" CREATED="1491893841928" ID="ID_1294300151" MODIFIED="1493287160587" TEXT="Улучшенная возможность тестирования"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> <icon BUILTIN="full-4"/> </node> <node COLOR="#990000" CREATED="1491893848000" ID="ID_1490062023" MODIFIED="1493287160587" TEXT="Стимулирование качественных проектных решений для приложений"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> <icon BUILTIN="full-5"/> </node> </node> <node COLOR="#00b439" CREATED="1491811103746" ID="ID_1272550409" MODIFIED="1493287160587" TEXT="4 стратегии"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1491811109837" ID="ID_115089086" MODIFIED="1493287160587" TEXT="�� легковесность и ненасильственность благодаря применению простых Java-объектов (POJO);"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1491811110301" ID="ID_1996115182" MODIFIED="1493287160587" TEXT="�� слабое связывание посредством внедрения зависимостей и ориентированности на интерфейсы;"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1491811110304" ID="ID_794595189" MODIFIED="1493287160587" TEXT="�� декларативное программирование через аспекты и общепринятые соглашения;"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1491811110305" ID="ID_1071591818" MODIFIED="1493287160587" TEXT="�� уменьшение объема типового кода через аспекты и шаблоны."> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> </node> </node> </node> <node COLOR="#0033ff" CREATED="1492156404456" ID="ID_1738178058" LINK="Spring%20+%20DB.mm" MODIFIED="1492156451256" POSITION="right" TEXT="Spring + DB"> <edge STYLE="sharp_bezier" WIDTH="8"/> <font NAME="SansSerif" SIZE="18"/> </node> <node COLOR="#0033ff" CREATED="1492156566293" ID="ID_748401687" LINK="Spring%20MVC.mm" MODIFIED="1492156566298" POSITION="right" TEXT="Spring MVC"> <edge STYLE="sharp_bezier" WIDTH="8"/> <font NAME="SansSerif" SIZE="18"/> </node> <node COLOR="#0033ff" CREATED="1494927554032" ID="ID_1919741351" MODIFIED="1494928402524" POSITION="right" TEXT="validation / conversion"> <edge STYLE="sharp_bezier" WIDTH="8"/> <font NAME="SansSerif" SIZE="18"/> <node COLOR="#00b439" CREATED="1494927580920" ID="ID_179195701" MODIFIED="1494928235148" TEXT="преобразование/форматирование"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1494927637674" ID="ID_1581587292" MODIFIED="1494927641890" TEXT="SPI"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1494927654187" ID="ID_59142979" MODIFIED="1494927654187" TEXT="service provider interface"/> </node> <node COLOR="#990000" CREATED="1494927686920" ID="ID_1754756255" MODIFIED="1494927814548" TEXT="PropertyEditor и паттерны парсинга"> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1494927731640" ID="ID_1249376223" MODIFIED="1494927788848" TEXT="Например, String in Date (dd-mm-yyyy)"> <font NAME="SansSerif" SIZE="12"/> </node> </node> <node COLOR="#990000" CREATED="1494927800065" ID="ID_978773360" MODIFIED="1494927821460" TEXT="org.springframework.core.convert"> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1494927840138" ID="ID_657095194" MODIFIED="1494927840139" TEXT="converter.Converter<S, Т>"/> <node COLOR="#111111" CREATED="1494927887195" ID="ID_240589518" MODIFIED="1494927887195" TEXT="ConversionService"/> <node COLOR="#111111" CREATED="1494928114954" ID="ID_1822012854" MODIFIED="1494928114954" TEXT="context.support"/> </node> <node COLOR="#990000" CREATED="1494928239315" ID="ID_608346762" MODIFIED="1494928239316" TEXT="org. springframework. format. Formatter<T>"> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1494928321578" ID="ID_1528665584" MODIFIED="1494928321578" TEXT="FormattingConversionService"/> </node> </node> <node COLOR="#00b439" CREATED="1494927592048" ID="ID_1297165617" MODIFIED="1494928390437" TEXT="централизованная валидация"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="16"/> <node COLOR="#990000" CREATED="1494927562172" ID="ID_1257153683" MODIFIED="1494927644904" TEXT="javax.validation"> <edge STYLE="bezier" WIDTH="thin"/> <font NAME="SansSerif" SIZE="14"/> <node COLOR="#111111" CREATED="1494927567707" ID="ID_1035085855" MODIFIED="1494927644904" TEXT="Библиотека АРl-интерфейса JSR-349"> <font NAME="SansSerif" SIZE="12"/> </node> <node COLOR="#111111" CREATED="1494928473673" ID="ID_1487389368" MODIFIED="1494928473674" TEXT="constraints"> <node COLOR="#111111" CREATED="1494928475152" ID="ID_80883550" MODIFIED="1494928479566" TEXT="@NotNull"/> <node COLOR="#111111" CREATED="1494928484256" ID="ID_1908026483" MODIFIED="1494928487868" TEXT="@Size"/> <node COLOR="#111111" CREATED="1494928693993" ID="ID_423326135" MODIFIED="1494928693993" TEXT="@AssertTrue"/> <node COLOR="#111111" CREATED="1494928702602" ID="ID_1849634392" MODIFIED="1494928702602" TEXT="@AssertFalse"/> <node COLOR="#111111" CREATED="1494928735211" ID="ID_763651636" MODIFIED="1494928735211" TEXT="@Valid"/> </node> <node COLOR="#111111" CREATED="1494928516938" ID="ID_886278160" MODIFIED="1494928519180" TEXT="beanvalidation.LocalValidatorFactoryBean"/> <node COLOR="#111111" CREATED="1494928613292" ID="ID_1210384815" MODIFIED="1494928613292" TEXT=".Payload"/> </node> <node COLOR="#990000" CREATED="1494927663729" ID="ID_598563369" MODIFIED="1494927663729" TEXT="JSR-349"> <font NAME="SansSerif" SIZE="14"/> </node> <node COLOR="#990000" CREATED="1494928386817" ID="ID_1734743915" MODIFIED="1494928386818" TEXT="org.springframework.validation"> <font NAME="SansSerif" SIZE="14"/> </node> </node> </node> </node> </map>