{"id":1020,"date":"2020-12-07T17:17:48","date_gmt":"2020-12-07T16:17:48","guid":{"rendered":"https:\/\/arasoftware.pl\/?p=1020"},"modified":"2021-10-21T10:33:12","modified_gmt":"2021-10-21T08:33:12","slug":"adnotacja-conditional","status":"publish","type":"post","link":"http:\/\/arasoftware.pl\/en\/adnotacja-conditional\/","title":{"rendered":"Adnotacja @Conditional"},"content":{"rendered":"<span class=\"rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Czas czytania: <\/span> <span class=\"rt-time\">3<\/span> <span class=\"rt-label rt-postfix\">minut<\/span><\/span><p class=\"wp-block-paragraph\">W tym artykule dowiesz si&#281; jak w prosty i szybki spos&oacute;b adnotacja @Conditional, u&#322;atwi Ci tworzenie bean&oacute;w w Twojej aplikacji w zale&#380;no&#347;ci od r&oacute;&#380;nych warunk&oacute;w.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Czasami podczas implementowania aplikacji w&nbsp;Spring&#8217;u&nbsp;mamy potrzeb&#281; tworzenia bean&#8217;&oacute;w, tylko je&#347;li&nbsp;jaki&#347; warunek zosta&#322; spe&#322;niony. Mo&#380;e to by&#263; dost&#281;pno&#347;&#263; zewn&#281;trznego komponentu (baza danych, inna aplikacja) lub na przyk&#322;ad parametr konfiguracyjny. Co&nbsp;zrobi&#263;, je&#347;li&nbsp;nie chcemy tworzy&#263; konkretnego&nbsp;bean&#8217;a&nbsp;w danym momencie lub &#347;rodowisku?<\/p>\n\n\n<p class=\"wp-block-paragraph\">Spring udost&#281;pnia nam adnotacj&#281; @Conditional, kt&oacute;ra na podstawie okre&#347;lonego warunku decyduje, czy bean zostanie za&#322;adowany do kontekstu aplikacji, co sprawia &#380;e jest to bardzo u&#380;yteczna funkcjonalno&#347;&#263;.<\/p>\n\n\n<h4 class=\"wp-block-heading wp-block-heading\" id=\"warunkowe-deklarowanie-beana\">\n<br>Warunkowe deklarowanie bean&#8217;a<\/h4>\n\n\n<p class=\"wp-block-paragraph\">Adnotacja @Conditional pozwala na utworzenie bean&#8217;a tylko w przypadku gdy warunek w niej zawarty zostanie spe&#322;niony. Istnieje wiele predefiniowanych wariacji adnotacji @Conditional, o kt&oacute;rych przeczytasz poni&#380;ej, ale podstawowe u&#380;ycie wygl&#261;da nast&#281;puj&#261;co.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"java\" class=\"language-java line-numbers\">@Configuration\nclass ConditionalBeanConfiguration {\n\n  @Bean\n  @Conditional(SomeCondition.class)\n  ConditionalBean conditionalBean(){\n    return new ConditionalBean();\n  };\n}<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"java\" class=\"language-java line-numbers\">public class SomeCondition implements Condition {\n@Override\n    public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) {\n        Boolean result = \/\/... do something and set result value to true or false\n        return result;\n    }\n}<\/code><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Bean &#8222;ConditionalBean&#8221; zostanie utworzony i za&#322;adowany do kontekstu aplikacji, tylko je&#347;li warunek zawarty w klasie &#8222;SomeCondition&#8221; zostanie spe&#322;niony. Klasa &#8222;SomeCondition&#8221; implementuje interfejs &#8222;Condition&#8221;, kt&oacute;ry to dostarcza deklaracji metody &#8222;boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata)&#8221;. Je&#347;li metoda &#8222;matches&#8221; zwr&oacute;ci warto&#347;&#263;  &#8222;true&#8221; to bean &#8222;ConditionalBean&#8221; zostanie utworzony. <\/p>\n\n\n<h4 class=\"wp-block-heading wp-block-heading\" id=\"warunkowe-tworzenie-beanc3b3w-konfiguracyjnych\">\n<br>Warunkowe tworzenie bean&#8217;&oacute;w konfiguracyjnych<\/h4>\n\n\n<p class=\"wp-block-paragraph\">Mo&#380;emy u&#380;ywa&#263; warunkowego tworzenia bean&#8217;&oacute;w konfiguracyjnych. Jest to przydatna rzecz podczas pracy na r&oacute;&#380;nych &#347;rodowiskach (np. deweloperskie, QA, czy te&#380; produkcyjne). W poni&#380;szym przyk&#322;adzie &#380;aden bean zdefiniowany w klasie &#8222;SomeConfiguration&#8221; nie zostanie utworzony, je&#347;li warunek adnotacji @Conditional nie zostanie spe&#322;niony.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"java\" class=\"language-java line-numbers\">@Configuration\n@Conditional(SomeCondition.class)\nclass SomeConfiguration {\n  @Bean\n  Bean bean(){\n    new Bean();\n  };\n}<\/code><\/pre>\n\n\n<h4 class=\"wp-block-heading wp-block-heading\" id=\"warunkowe-tworzenie-komponentc3b3w\">\n<br>Warunkowe tworzenie komponent&oacute;w<\/h4>\n\n\n<p class=\"wp-block-paragraph\">Mo&#380;emy u&#380;y&#263; adnotacji @Conditional do zarz&#261;dzania tworzeniem bean&oacute;w typu:<\/p>\n\n\n<ul class=\"wp-block-list wp-block-list\" style=\"\">\n<li>@Component<\/li>\n<li>@Service<\/li>\n<li>@Repository<\/li>\n<li>@Controller<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"java\" class=\"language-java line-numbers\">@Component\n@Conditional(SomeCondition.class)\nclass SomeComponent {\n}<\/code><\/pre>\n\n\n<h4 class=\"wp-block-heading wp-block-heading\" id=\"najpopularniejsze-predefiniowane-wariacje-adnotacji-conditional\">\n<br>Najpopularniejsze predefiniowane wariacje adnotacji  @Conditional <\/h4>\n\n\n<p class=\"wp-block-paragraph\"><strong>@ConditionalOnProperty<\/strong> &#8211; jedna z najbardziej u&#380;ytecznych adnotacji z tej grupy. Pozwala ona na za&#322;adowanie bean&#8217;a tylko w przypadku, je&#347;li parametr konfiguracyjny na to pozwala &#8211; jest ustawiony na warto&#347;&#263; &#8222;true&#8221;. Zobacz poni&#380;szy przyk&#322;ad u&#380;ycia:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"java\" class=\"language-java line-numbers\">@Configuration\n@ConditionalOnProperty(\n    value=\"some.parameter\", \n    havingValue = \"true\", \n    matchIfMissing = false)\nclass SomeConfigurations {\n  ...\n}<\/code><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Adnotacja @ConditionalOnProperty przyjmuje trzy parametry; <\/p>\n\n\n<ul class=\"wp-block-list wp-block-list\" style=\"\">\n<li>value &#8211; nazwa parametru konfiguracyjnego.<\/li>\n<li>havingValue &#8211; warto&#347;&#263;, jak&#261; musi przyj&#261;&#263; parametr konfiguracyjny, aby warunek zosta&#322; spe&#322;niony.<\/li>\n<li>matchIfMissing &#8211; domy&#347;lna warto&#347;&#263;, je&#347;li parametr konfiguracyjny nie jest ustawiony lub nie istnieje.<\/li>\n<\/ul>\n\n\n<p class=\"wp-block-paragraph\"> <\/p>\n\n\n<p class=\"wp-block-paragraph\"><strong>@ConditionalOnBean <\/strong>&#8211; pozwala na za&#322;adowanie bean&#8217;a, je&#347;li inny bean ju&#380; istnieje w kontek&#347;cie aplikacji. W poni&#380;szym przyk&#322;adzie bean &#8222;RelatedBean&#8221; zostanie za&#322;adowany, tylko je&#347;li bean &#8222;SomeBean&#8221; istnieje ju&#380; w kontek&#347;cie aplikacji.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"java\" class=\"language-java line-numbers\">@Configuration\n@ConditionalOnBean(SomeBean.class)\nclass RelatedBean {\n  ...\n}<\/code><\/pre>\n\n\n<p class=\"wp-block-paragraph\"> <br><strong>@ConditionalOnMissingBean<\/strong> &#8211; podobna&nbsp;do poprzedniej&nbsp;adnotacji, z tym &#380;e&nbsp;w tym przypadku bean&nbsp;&#8222;RelatedBean&#8221;&nbsp;zostanie&nbsp;utworzony, je&#347;li&nbsp;bean&nbsp;&#8222;SomeBean&#8221;&nbsp;nie istnieje w kontek&#347;cie aplikacji.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"java\" class=\"language-java line-numbers\">@Configuration\n@ConditionalOnMissingBean(SomeBean.class)\nclass RelatedBean {\n  ...\n}<\/code><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><br><strong>@ConditionalOnExperssion<\/strong> &#8211; bardzo&nbsp;przydatna wariacja adnotacji&nbsp;@Conditional, kt&oacute;ra pozwala na zastosowanie skomplikowanych wyra&#380;e&#324; warunkowych z u&#380;yciem wi&#281;cej ni&#380; jednego parametru konfiguracyjnego. W poni&#380;szym przyk&#322;adzie bean&nbsp;&#8222;SomeBean&#8221;&nbsp;zostanie&nbsp;utworzony, tylko je&#347;li&nbsp;warto&#347;ci parametr&oacute;w konfiguracyjnych&nbsp;&#8222;some.param1&#8221;&nbsp;oraz&nbsp;&#8222;some.param2&#8221;&nbsp;b&#281;d&#261; ustawione na&nbsp;&#8222;true&#8221;.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"java\" class=\"language-java line-numbers\">@Configuration\n@ConditionalOnExpression(\n    \"${some.param1} and ${some.param2}\"\n)\nclass SomeBean{\n  ...\n}<\/code><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><br><strong>@ConditionalOnResource<\/strong> &#8211; umo&#380;liwia&nbsp;za&#322;adowanie&nbsp;bean&#8217;a&nbsp;do kontekstu aplikacji w zale&#380;no&#347;ci od&nbsp;tego, czy&nbsp;zas&oacute;b aplikacji istnieje lub nie. W przyk&#322;adzie utworzenie beana&nbsp;&#8222;LogbackBean&#8221;&nbsp;jest uzale&#380;nione od istnienia pliku&nbsp;&#8222;logback.xml&#8221;&nbsp;w katalogu&nbsp;&#8222;resources&#8221;.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"java\" class=\"language-java line-numbers\">@Configuration\n@ConditionalOnResource(resources = \"\/logback.xml\")\nclass LogbackBean {\n  ...\n}<\/code><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><br><strong>@ConditionalOnClass<\/strong> &#8211; pozwala na utworzenie bean&#8217;a &#8222;SomeBean&#8221; w zale&#380;no&#347;ci od tego, czy klasa &#8222;com.arasoftware.does.ExistClass&#8221; istnieje.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"java\" class=\"language-java line-numbers\">@Configuration\n@ConditionalOnClass(name = \"com.arasoftware.does.ExistClass\")\nclass SomeBean {\n  ...\n}<\/code><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><br><strong>@ConditionalOnMissingClass<\/strong> &#8211; analogicznie do poprzedniej adnotacji, z tym &#380;e tutaj bean &#8222;SomeBean&#8221; zostanie utworzony, je&#347;li klasa &#8222;com.arasoftware.does.ExistClass&#8221; nie istnieje.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"java\" class=\"language-java line-numbers\">@Configuration\n@ConditionalOnMissingClass(name = \"com.arasoftware.does.ExistClass\")\nclass SomeBean {\n  ...\n}<\/code><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><br><strong>@ConditionalOnJava<\/strong> &#8211; pozwala na utworzenie bean&#8217;a w zale&#380;no&#347;ci od wersji Javy, z kt&oacute;rej aktualnie u&#380;ywamy. Jest to bardzo przydatna adnotacjach podczas refactoringu aplikacji &#8222;legacy&#8221;.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"java\" class=\"language-java line-numbers\">@Configuration\n@ConditionalOnJava(JavaVersion.EIGHT)\nclass SomeBean{\n  ...\n}<\/code><\/pre>\n\n\n<h4 class=\"wp-block-heading wp-block-heading\" id=\"podsumowanie\">\n<br>Podsumowanie<\/h4>\n\n\n<p class=\"wp-block-paragraph\">Jak wida&#263; mamy do dyspozycji ca&#322;kiem sporo r&oacute;&#380;nego rodzaju wariant&oacute;w adnotacji @Conditional, poniewa&#380; tw&oacute;rcy Springa pomy&#347;leli o tym &#380;eby maksymalnie u&#322;atwi&#263; korzystanie z tej adnotacji. Pozwalaj&#261; one odpowiednio konfigurowa&#263; aplikacj&#281; w zale&#380;no&#347;ci od jej zasob&oacute;w czy te&#380; &#347;rodowiska, co czyni ten mechanizm bardzo &#322;atwym w u&#380;yciu.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Przydatne materia&#322;y:<\/p>\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/docs.spring.io\/spring-framework\/docs\/current\/javadoc-api\/org\/springframework\/context\/annotation\/Conditional.html\">https:\/\/docs.spring.io\/spring-framework\/docs\/current\/javadoc-api\/org\/springframework\/context\/annotation\/Conditional.html<\/a><\/p>\n\n\n<p class=\"wp-block-paragraph\">Je&#347;li podoba&#322; Ci si&#281; ten artyku&#322;, to prosz&#281;, podziel si&#281; nim z innymi na swoich social mediach!<\/p>","protected":false},"excerpt":{"rendered":"<p><span class=\"rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Czas czytania: <\/span> <span class=\"rt-time\">3<\/span> <span class=\"rt-label rt-postfix\">minut<\/span><\/span> W tym artykule dowiesz si&#281; jak w prosty i szybki spos&oacute;b adnotacja @Conditional, u&#322;atwi Ci tworzenie bean&oacute;w w Twojej aplikacji w zale&#380;no&#347;ci od r&oacute;&#380;nych warunk&oacute;w. Czasami podczas implementowania aplikacji w&nbsp;Spring&#8217;u&nbsp;mamy potrzeb&#281; tworzenia bean&#8217;&oacute;w, tylko je&#347;li&nbsp;jaki&#347; warunek zosta&#322; spe&#322;niony. Mo&#380;e to by&#263; dost&#281;pno&#347;&#263; zewn&#281;trznego komponentu (baza danych, inna aplikacja) lub na przyk&#322;ad parametr konfiguracyjny. Co&nbsp;zrobi&#263;, je&#347;li&nbsp;nie &hellip;<\/p>","protected":false},"author":1,"featured_media":1045,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24,19],"tags":[14],"class_list":["post-1020","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java","category-spring-boot","tag-spring-boot"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.11 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Adnotacja @Conditional - czyli warunkowe tworzenie bean\u00f3w<\/title>\n<meta name=\"description\" content=\"W tym artykule dowiesz si\u0119 jak w prosty i szybki spos\u00f3b adnotacja @Conditional, u\u0142atwi Ci tworzenie bean\u00f3w w Twojej aplikacji w zale\u017cno\u015bci od r\u00f3\u017cnych warunk\u00f3w.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/arasoftware.pl\/en\/adnotacja-conditional\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Adnotacja @Conditional - Warunkowe tworzenie bean\u00f3w\" \/>\n<meta property=\"og:description\" content=\"W tym artykule dowiesz si\u0119 jak w prosty i szybki spos\u00f3b adnotacja @Conditional, u\u0142atwi Ci tworzenie bean\u00f3w w Twojej aplikacji w zale\u017cno\u015bci od r\u00f3\u017cnych warunk\u00f3w.\" \/>\n<meta property=\"og:url\" content=\"http:\/\/arasoftware.pl\/en\/adnotacja-conditional\/\" \/>\n<meta property=\"og:site_name\" content=\"Ara Software\" \/>\n<meta property=\"article:published_time\" content=\"2020-12-07T16:17:48+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-10-21T08:33:12+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/arasoftware.pl\/wp-content\/uploads\/2020\/12\/conditional.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Radek Osak\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Adnotacja @Conditional - Warunkowe tworzenie bean\u00f3w\" \/>\n<meta name=\"twitter:description\" content=\"W tym artykule dowiesz si\u0119 jak w prosty i szybki spos\u00f3b adnotacja @Conditional, u\u0142atwi Ci tworzenie bean\u00f3w w Twojej aplikacji w zale\u017cno\u015bci od r\u00f3\u017cnych warunk\u00f3w.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/arasoftware.pl\/wp-content\/uploads\/2020\/12\/conditional.png\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Radek Osak\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"TechArticle\",\"@id\":\"https:\/\/arasoftware.pl\/adnotacja-conditional\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/arasoftware.pl\/adnotacja-conditional\/\"},\"author\":{\"name\":\"Radek Osak\",\"@id\":\"https:\/\/arasoftware.pl\/#\/schema\/person\/a13fe68bd27e762ef255547a88956902\"},\"headline\":\"Adnotacja @Conditional\",\"datePublished\":\"2020-12-07T16:17:48+00:00\",\"dateModified\":\"2021-10-21T08:33:12+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/arasoftware.pl\/adnotacja-conditional\/\"},\"wordCount\":733,\"publisher\":{\"@id\":\"https:\/\/arasoftware.pl\/#organization\"},\"keywords\":[\"Spring Boot\"],\"articleSection\":[\"JAVA\",\"Spring Boot\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/arasoftware.pl\/adnotacja-conditional\/\",\"url\":\"https:\/\/arasoftware.pl\/adnotacja-conditional\/\",\"name\":\"Adnotacja @Conditional - czyli warunkowe tworzenie bean\u00f3w\",\"isPartOf\":{\"@id\":\"https:\/\/arasoftware.pl\/#website\"},\"datePublished\":\"2020-12-07T16:17:48+00:00\",\"dateModified\":\"2021-10-21T08:33:12+00:00\",\"description\":\"W tym artykule dowiesz si\u0119 jak w prosty i szybki spos\u00f3b adnotacja @Conditional, u\u0142atwi Ci tworzenie bean\u00f3w w Twojej aplikacji w zale\u017cno\u015bci od r\u00f3\u017cnych warunk\u00f3w.\",\"breadcrumb\":{\"@id\":\"https:\/\/arasoftware.pl\/adnotacja-conditional\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/arasoftware.pl\/adnotacja-conditional\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/arasoftware.pl\/adnotacja-conditional\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/arasoftware.pl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Adnotacja @Conditional\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/arasoftware.pl\/#website\",\"url\":\"https:\/\/arasoftware.pl\/\",\"name\":\"Ara Software\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/arasoftware.pl\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/arasoftware.pl\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/arasoftware.pl\/#organization\",\"name\":\"Ara Software\",\"url\":\"https:\/\/arasoftware.pl\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/arasoftware.pl\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/arasoftware.pl\/wp-content\/uploads\/2023\/06\/ara-logo-light-1.svg\",\"contentUrl\":\"https:\/\/arasoftware.pl\/wp-content\/uploads\/2023\/06\/ara-logo-light-1.svg\",\"width\":317,\"height\":55,\"caption\":\"Ara Software\"},\"image\":{\"@id\":\"https:\/\/arasoftware.pl\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/arasoftware.pl\/#\/schema\/person\/a13fe68bd27e762ef255547a88956902\",\"name\":\"Radek Osak\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/arasoftware.pl\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/2a5a97fd24033c3df7dff799dc95774b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/2a5a97fd24033c3df7dff799dc95774b?s=96&d=mm&r=g\",\"caption\":\"Radek Osak\"},\"url\":\"http:\/\/arasoftware.pl\/en\/author\/radek030790gmail-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Adnotacja @Conditional - czyli warunkowe tworzenie bean\u00f3w","description":"W tym artykule dowiesz si\u0119 jak w prosty i szybki spos\u00f3b adnotacja @Conditional, u\u0142atwi Ci tworzenie bean\u00f3w w Twojej aplikacji w zale\u017cno\u015bci od r\u00f3\u017cnych warunk\u00f3w.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"http:\/\/arasoftware.pl\/en\/adnotacja-conditional\/","og_locale":"en_US","og_type":"article","og_title":"Adnotacja @Conditional - Warunkowe tworzenie bean\u00f3w","og_description":"W tym artykule dowiesz si\u0119 jak w prosty i szybki spos\u00f3b adnotacja @Conditional, u\u0142atwi Ci tworzenie bean\u00f3w w Twojej aplikacji w zale\u017cno\u015bci od r\u00f3\u017cnych warunk\u00f3w.","og_url":"http:\/\/arasoftware.pl\/en\/adnotacja-conditional\/","og_site_name":"Ara Software","article_published_time":"2020-12-07T16:17:48+00:00","article_modified_time":"2021-10-21T08:33:12+00:00","og_image":[{"width":1920,"height":1080,"url":"https:\/\/arasoftware.pl\/wp-content\/uploads\/2020\/12\/conditional.png","type":"image\/png"}],"author":"Radek Osak","twitter_card":"summary_large_image","twitter_title":"Adnotacja @Conditional - Warunkowe tworzenie bean\u00f3w","twitter_description":"W tym artykule dowiesz si\u0119 jak w prosty i szybki spos\u00f3b adnotacja @Conditional, u\u0142atwi Ci tworzenie bean\u00f3w w Twojej aplikacji w zale\u017cno\u015bci od r\u00f3\u017cnych warunk\u00f3w.","twitter_image":"https:\/\/arasoftware.pl\/wp-content\/uploads\/2020\/12\/conditional.png","twitter_misc":{"Written by":"Radek Osak","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"TechArticle","@id":"https:\/\/arasoftware.pl\/adnotacja-conditional\/#article","isPartOf":{"@id":"https:\/\/arasoftware.pl\/adnotacja-conditional\/"},"author":{"name":"Radek Osak","@id":"https:\/\/arasoftware.pl\/#\/schema\/person\/a13fe68bd27e762ef255547a88956902"},"headline":"Adnotacja @Conditional","datePublished":"2020-12-07T16:17:48+00:00","dateModified":"2021-10-21T08:33:12+00:00","mainEntityOfPage":{"@id":"https:\/\/arasoftware.pl\/adnotacja-conditional\/"},"wordCount":733,"publisher":{"@id":"https:\/\/arasoftware.pl\/#organization"},"keywords":["Spring Boot"],"articleSection":["JAVA","Spring Boot"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/arasoftware.pl\/adnotacja-conditional\/","url":"https:\/\/arasoftware.pl\/adnotacja-conditional\/","name":"Adnotacja @Conditional - czyli warunkowe tworzenie bean\u00f3w","isPartOf":{"@id":"https:\/\/arasoftware.pl\/#website"},"datePublished":"2020-12-07T16:17:48+00:00","dateModified":"2021-10-21T08:33:12+00:00","description":"W tym artykule dowiesz si\u0119 jak w prosty i szybki spos\u00f3b adnotacja @Conditional, u\u0142atwi Ci tworzenie bean\u00f3w w Twojej aplikacji w zale\u017cno\u015bci od r\u00f3\u017cnych warunk\u00f3w.","breadcrumb":{"@id":"https:\/\/arasoftware.pl\/adnotacja-conditional\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/arasoftware.pl\/adnotacja-conditional\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/arasoftware.pl\/adnotacja-conditional\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/arasoftware.pl\/"},{"@type":"ListItem","position":2,"name":"Adnotacja @Conditional"}]},{"@type":"WebSite","@id":"https:\/\/arasoftware.pl\/#website","url":"https:\/\/arasoftware.pl\/","name":"Ara Software","description":"","publisher":{"@id":"https:\/\/arasoftware.pl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/arasoftware.pl\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/arasoftware.pl\/#organization","name":"Ara Software","url":"https:\/\/arasoftware.pl\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/arasoftware.pl\/#\/schema\/logo\/image\/","url":"https:\/\/arasoftware.pl\/wp-content\/uploads\/2023\/06\/ara-logo-light-1.svg","contentUrl":"https:\/\/arasoftware.pl\/wp-content\/uploads\/2023\/06\/ara-logo-light-1.svg","width":317,"height":55,"caption":"Ara Software"},"image":{"@id":"https:\/\/arasoftware.pl\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/arasoftware.pl\/#\/schema\/person\/a13fe68bd27e762ef255547a88956902","name":"Radek Osak","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/arasoftware.pl\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/2a5a97fd24033c3df7dff799dc95774b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2a5a97fd24033c3df7dff799dc95774b?s=96&d=mm&r=g","caption":"Radek Osak"},"url":"http:\/\/arasoftware.pl\/en\/author\/radek030790gmail-com\/"}]}},"_links":{"self":[{"href":"http:\/\/arasoftware.pl\/en\/wp-json\/wp\/v2\/posts\/1020","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/arasoftware.pl\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/arasoftware.pl\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/arasoftware.pl\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/arasoftware.pl\/en\/wp-json\/wp\/v2\/comments?post=1020"}],"version-history":[{"count":1,"href":"http:\/\/arasoftware.pl\/en\/wp-json\/wp\/v2\/posts\/1020\/revisions"}],"predecessor-version":[{"id":4053,"href":"http:\/\/arasoftware.pl\/en\/wp-json\/wp\/v2\/posts\/1020\/revisions\/4053"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/arasoftware.pl\/en\/wp-json\/wp\/v2\/media\/1045"}],"wp:attachment":[{"href":"http:\/\/arasoftware.pl\/en\/wp-json\/wp\/v2\/media?parent=1020"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/arasoftware.pl\/en\/wp-json\/wp\/v2\/categories?post=1020"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/arasoftware.pl\/en\/wp-json\/wp\/v2\/tags?post=1020"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}