{"id":71497,"date":"2019-01-30T07:10:29","date_gmt":"2019-01-29T23:10:29","guid":{"rendered":"https:\/\/www.baeldung.com\/?p=49116"},"modified":"2019-01-30T07:10:29","modified_gmt":"2019-01-29T23:10:29","slug":"java-weekly-issue-266","status":"publish","type":"post","link":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/2019\/01\/30\/java-weekly-issue-266\/","title":{"rendered":"Java Weekly, Issue 266"},"content":{"rendered":"<p><strong>Here we go\u2026<\/strong><\/p>\n<h2><strong>1. Spring and Java<\/strong><\/h2>\n<h4><a href=\"http:\/\/in.relation.to\/2019\/01\/23\/testing-cdi-beans-and-persistence-layer-under-java-se\/\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0Testing CDI Beans and the Persistence Layer Under Java SE<\/strong><\/a> [<span style=\"color: #993300;\">in.relation.to<\/span>]<\/h4>\n<p>A good write-up on using Weld to test interactions between the JPA layer and the business logic layer <strong>without incurring the overhead of container deployments<\/strong>.<\/p>\n<h4><a href=\"https:\/\/www.petrikainulainen.net\/programming\/testing\/adding-input-and-output-parameters-to-testproject-actions\/\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0Adding Input and Output Parameters to TestProject Actions<\/strong><\/a> [<span style=\"color: #993300;\">petrikainulainen.net<\/span>]<\/h4>\n<p>A brief example of\u00a0<strong>using\u00a0the <em>@Parameter<\/em> annotation<\/strong> to create parameterized actions in a TestProject addon.<\/p>\n<h4><a href=\"https:\/\/vladmihalcea.com\/escape-sql-reserved-keywords-jpa-hibernate\/\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0How to escape SQL reserved keywords with JPA and Hibernate<\/strong><\/a> [<span style=\"color: #993300;\">vladmihalcea.com<\/span>]<\/h4>\n<p>A couple of approaches to the problem\u00a0\u2013\u00a0<strong>using escape characters explicitly<\/strong>\u00a0within <em>@Table<\/em> and <em>@Column<\/em> annotations, <strong>and\u00a0using a global Hibernate property<\/strong>.<\/p>\n<h4><a href=\"https:\/\/blog.codecentric.de\/en\/2019\/01\/securing-spring-boot-admin-actuator-endpoints-keycloak\/\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0Securing Spring Boot Admin &amp; actuator endpoints with Keycloak<\/strong><\/a> [<span style=\"color: #993300;\">blog.codecentric.de<\/span>]<\/h4>\n<p>A comprehensive guide to help you <strong>secure both the admin app itself and the actuator endpoints of apps that it monitors<\/strong>.<\/p>\n<h4><strong>Also worth reading:<\/strong><\/h4>\n<ul>\n<li>\n<h4><a href=\"http:\/\/marxsoftware.blogspot.com\/2019\/01\/custom-compact-number-patterns.html\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0Custom Compact Number Patterns with JDK 12 Compact Number Formatting<\/strong><\/a> [<span style=\"color: #993300;\">marxsoftware.blogspot.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/blog.frankel.ch\/sieve-eratosthenes\/\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0The sieve of Eratosthenes<\/strong><\/a> [<span style=\"color: #993300;\">blog.frankel.ch<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/thoughts-on-java.org\/dto-projections\/\"><strong>&gt;&gt;\u00a0Why, When and How to Use DTO Projections with JPA and Hibernate<\/strong><\/a> [<span style=\"color: #993300;\">thoughts-on-java.org<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/michaelcgood.com\/spring-data-redis-sentinel\/\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0Spring Data Redis: High-Availability with Sentinel<\/strong><\/a> [<span style=\"color: #993300;\">michaelcgood.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/medium.com\/@leventov\/code-review-checklist-java-concurrency-49398c326154\"><strong>&gt;&gt;\u00a0Code Review Checklist: Java Concurrency<\/strong><\/a> [<span style=\"color: #993300;\">medium.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/vanwilgenburg.wordpress.com\/2019\/01\/22\/embedded-elasticsearch-junit5-spring-boot\/\">&gt;&gt; Running your JUnit 5 integration test with an embedded elasticsearch on a random port<\/a> [<span style=\"color: #993300;\">vanwilgenburg.wordpress.com<\/span>]<\/h4>\n<\/li>\n<\/ul>\n<h4><strong>Webinars and presentations:<\/strong><\/h4>\n<ul>\n<li>\n<h4><a href=\"https:\/\/spring.io\/blog\/2019\/01\/30\/spring-tips-the-reactor-context\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0Spring Tips: The Reactor Context<\/strong><\/a> [<span style=\"color: #993300;\">spring.io<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/spring.io\/blog\/2019\/01\/25\/a-bootiful-podcast-an-interview-with-spring-boot-engineer-madhura-bhave\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0A Bootiful Podcast: an Interview with Spring Boot engineer Madhura Bhave<\/strong><\/a> [<span style=\"color: #993300;\">spring.io<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/www.infoq.com\/presentations\/monolith-legacy-rethinking\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0Rethinking Legacy and Monolithic Systems<\/strong><\/a> [<span style=\"color: #993300;\">infoq.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><strong><a href=\"https:\/\/www.infoq.com\/podcasts\/building-machine-learning-mvp\"  rel=\"noopener\">&gt;&gt;\u00a0Megan Cartwright on Building a Machine Learning MVP at an Early Stage Startup<\/a>\u00a0<\/strong>[<span style=\"color: #993300;\">infoq.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/www.infoq.com\/presentations\/kubernetes-deployment-primitives\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0All You Need to Know to Deploy Applications on Kubernetes<\/strong><\/a> [<span style=\"color: #993300;\">infoq.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/www.infoq.com\/presentations\/kubernetes-yaml\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0Dissecting Kubernetes (K8s) &#8211; An Intro to Main Components<\/strong><\/a> [<span style=\"color: #993300;\">infoq.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/www.infoq.com\/presentations\/containers-infrastructure-virtualization\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0P to V to C: The Value of Bringing \u201cEverything\u201d to Containers<\/strong><\/a> [<span style=\"color: #993300;\">infoq.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/www.infoq.com\/presentations\/metrics-grouping\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0Metrics that Matter &#8211; Moving from Easy to Impactful<\/strong><\/a> [<span style=\"color: #993300;\">infoq.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/www.infoq.com\/presentations\/type-system-typescript-flow-graphql\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0Learning to Love Type Systems<\/strong><\/a> [<span style=\"color: #993300;\">infoq.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/www.infoq.com\/presentations\/intel-cloud-native-microservices\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0Intel&#8217;s Cloud-Native Transformation<\/strong><\/a> [<span style=\"color: #993300;\">infoq.com<\/span>]<\/h4>\n<\/li>\n<\/ul>\n<p><strong>Time to upgrade:<\/strong><\/p>\n<ul>\n<li>\n<h4><a href=\"https:\/\/spring.io\/blog\/2019\/01\/25\/spring-tools-4-1-1-released\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0Spring Tools 4.1.1 released<\/strong><\/a> [<span style=\"color: #993300;\">spring.io<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/spring.io\/blog\/2019\/01\/24\/spring-io-platform-cairo-sr7\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0Spring IO Platform Cairo-SR7<\/strong><\/a> [<span style=\"color: #993300;\">spring.io<\/span>] and <a href=\"https:\/\/spring.io\/blog\/2019\/01\/24\/spring-io-platform-brussels-sr16\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0Spring IO Platform Brussels-SR16<\/strong><\/a> [<span style=\"color: #993300;\">spring.io<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/spring.io\/blog\/2019\/01\/23\/spring-cloud-greenwich-release-is-now-available\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0Spring Cloud Greenwich.RELEASE is now available<\/strong><\/a> [<span style=\"color: #993300;\">spring.io<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/blogs.oracle.com\/theaquarium\/jakarta-ee-milestone-eclipse-glassfish-51-is-java-ee-8-compatible\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0Jakarta EE Milestone &#8211; Eclipse GlassFish 5.1 is Java EE 8 Compatible<\/strong><\/a> [<span style=\"color: #993300;\">blogs.oracle.com<\/span>]<\/h4>\n<\/li>\n<\/ul>\n<h2><strong>2. Technical and Musings<\/strong><\/h2>\n<h4><a href=\"https:\/\/www.infoq.com\/articles\/microservices-bdd-interface-oriented\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0Developing Microservices with Behavior Driven Development and Interface Oriented Design<\/strong><\/a> [<span style=\"color: #993300;\">infoq.com<\/span>]<\/h4>\n<p>An integration of these two sets of design principles can help you <strong>create well-defined services that work well together<\/strong>.<\/p>\n<h4><a href=\"https:\/\/blog.overops.com\/the-4-quality-gates-every-sre-team-must-check-before-promoting-code\/\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0The 4 Quality Gates Every SRE Team Must Check Before Promoting Code<\/strong><\/a> [<span style=\"color: #993300;\">blog.overops.com<\/span>]<\/h4>\n<p>A set of comparative quality measurements, wherein machine learning and AI converge, that are easy to implement and can help you <strong>block bad releases from being deployed to production<\/strong>.<\/p>\n<p><strong>Also worth reading:<\/strong><\/p>\n<ul>\n<li>\n<h4><a href=\"https:\/\/bravenewgeek.com\/api-authentication-with-gcp-identity-aware-proxy\/\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0API Authentication with GCP Identity-Aware Proxy<\/strong><\/a> [<span style=\"color: #993300;\">bravenewgeek.com<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/advancedweb.hu\/2019\/01\/30\/root_login_notifications\/\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0AWS: How to get notified on root account login<\/strong><\/a> [<span style=\"color: #993300;\">advancedweb.hu<\/span>]<\/h4>\n<\/li>\n<li>\n<h4><a href=\"https:\/\/www.infoq.com\/news\/2019\/01\/openapi-v3-support-azure-apim\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0Microsoft Announces Preview of OpenAPI Specification V3 in Azure API Management<\/strong><\/a> [<span style=\"color: #993300;\">infoq.com<\/span>]<\/h4>\n<\/li>\n<\/ul>\n<h2><strong>3. Comics<\/strong><\/h2>\n<p>And my favorite Dilberts of the week:<\/p>\n<h4><a href=\"https:\/\/dilbert.com\/strip\/2019-01-30\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0Best Product<\/strong><\/a> [<span style=\"color: #993300;\">dilbert.com<\/span>]<\/h4>\n<h4><a href=\"https:\/\/dilbert.com\/strip\/2019-01-29\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0New Forms<\/strong><\/a> [<span style=\"color: #993300;\">dilbert.com<\/span>]<\/h4>\n<h4><a href=\"https:\/\/dilbert.com\/strip\/2019-01-24\"  rel=\"noopener\"><strong>&gt;&gt;\u00a0Self-Driving Car<\/strong><\/a> [<span style=\"color: #993300;\">dilbert.com<\/span>]<\/h4>\n<h2><strong>4. Pick of the Week<\/strong><\/h2>\n<h4><strong><a href=\"https:\/\/medium.com\/factory-mind\/regex-tutorial-a-simple-cheatsheet-by-examples-649dc1c3f285\">&gt;&gt;\u00a0Regex tutorial\u200a\u2014\u200aA quick cheatsheet by examples<\/a>\u00a0<\/strong>[<span style=\"color: #993300;\">medium.com<\/span>]<\/h4>\n<p><span style=\"font-weight: 400;\"><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A lightweight approach to CDI bean testing with Weld, plus a look at four quality gates you can use to evaluate whether your release is production-ready.&nbsp;<a href=\"https:\/\/www.baeldung.com\/java-weekly-266\" title=\"Java Weekly, Issue 266\">&gt;&gt;&gt;<\/a> <a href=\"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/2019\/01\/30\/java-weekly-issue-266\/\">\u95b1\u8b80\u5168\u6587 <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":142,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"slim_seo":[],"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[2,315,2149,7],"tags":[398,402,397,414,413,410,409,407,408,11,406,399,400,394,318,375,558,560,555,561,553,554,562,524,10,401,396,381,403,412,411,395,405,404,457,454,316],"jetpack_publicize_connections":[],"aioseo_notices":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p7prtj-iBb","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/posts\/71497"}],"collection":[{"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/users\/142"}],"replies":[{"embeddable":true,"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/comments?post=71497"}],"version-history":[{"count":2,"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/posts\/71497\/revisions"}],"predecessor-version":[{"id":71540,"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/posts\/71497\/revisions\/71540"}],"wp:attachment":[{"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/media?parent=71497"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/categories?post=71497"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-json\/wp\/v2\/tags?post=71497"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}