Openstack Glance is an image service that allows discovery, registration, and retrieval of virtual machine images. It has a RESTful API to query image metadata and retrieve images. Images can be stored in various locations like file systems or object storage. Glance consists of components like the Glance API, registry, database, and stores that support different storage backends. It supports various disk and container formats for images.
Oracle Integration Cloud (OIC) is a solution that enables simple and rapid data integration with SaaS. It provides integration capabilities including API management, process automation, integration monitoring and hybrid integration between cloud and on-premises systems. OIC uses adapters and low-code visual development tools to integrate SaaS applications, databases, on-premises systems and APIs. It supports common integration patterns and protocols. Pricing is based on the number of messages processed per hour with monthly or pay-as-you-go options.
Rook turns distributed storage systems into self-managing, self-scaling, self-healing storage services. It automates the tasks of a storage administrator: deployment, bootstrapping, configuration, provisioning, scaling, upgrading, migration, disaster recovery, monitoring, and resource management.
Rook uses the power of the Kubernetes platform to deliver its services via a Kubernetes Operator for each storage provider.
Oleg Chunikhin, Co-Founder and CTO @ Kublr.com, will present an introduction to storage management on k8s using Rook and Ceph.
Docker is a platform for developing and running applications within containers. Containers allow applications to be packaged with all their dependencies and run consistently across different computing environments. The Docker platform includes Docker Engine for running containers, Docker images which are templates for containers, and Docker registries for storing images. When running, a container is isolated from other containers and the host machine. Docker uses a client-server architecture with Docker Engine running as a daemon process and CLI client for interacting with it.
This document provides an introduction to Docker and containers. It discusses why containers are useful for software deployment given changes in the industry. Containers provide lightweight isolation of applications and their dependencies. Docker is a tool that manages containers running on the same operating system kernel. Key Docker components include the client, server, images, and containers. Popular use cases of Docker include Google running over a billion containers per week and Finnish Railways saving 50% of cloud costs with Docker.
Openstack Glance is an image service that allows discovery, registration, and retrieval of virtual machine images. It has a RESTful API to query image metadata and retrieve images. Images can be stored in various locations like file systems or object storage. Glance consists of components like the Glance API, registry, database, and stores that support different storage backends. It supports various disk and container formats for images.
Oracle Integration Cloud (OIC) is a solution that enables simple and rapid data integration with SaaS. It provides integration capabilities including API management, process automation, integration monitoring and hybrid integration between cloud and on-premises systems. OIC uses adapters and low-code visual development tools to integrate SaaS applications, databases, on-premises systems and APIs. It supports common integration patterns and protocols. Pricing is based on the number of messages processed per hour with monthly or pay-as-you-go options.
Rook turns distributed storage systems into self-managing, self-scaling, self-healing storage services. It automates the tasks of a storage administrator: deployment, bootstrapping, configuration, provisioning, scaling, upgrading, migration, disaster recovery, monitoring, and resource management.
Rook uses the power of the Kubernetes platform to deliver its services via a Kubernetes Operator for each storage provider.
Oleg Chunikhin, Co-Founder and CTO @ Kublr.com, will present an introduction to storage management on k8s using Rook and Ceph.
Docker is a platform for developing and running applications within containers. Containers allow applications to be packaged with all their dependencies and run consistently across different computing environments. The Docker platform includes Docker Engine for running containers, Docker images which are templates for containers, and Docker registries for storing images. When running, a container is isolated from other containers and the host machine. Docker uses a client-server architecture with Docker Engine running as a daemon process and CLI client for interacting with it.
This document provides an introduction to Docker and containers. It discusses why containers are useful for software deployment given changes in the industry. Containers provide lightweight isolation of applications and their dependencies. Docker is a tool that manages containers running on the same operating system kernel. Key Docker components include the client, server, images, and containers. Popular use cases of Docker include Google running over a billion containers per week and Finnish Railways saving 50% of cloud costs with Docker.
This document provides an overview of the WebLogic Scripting Tool (WLST) and discusses:
- WLST can be used offline to create and modify domains or online to manage running domains.
- Offline mode uses the configuration framework to modify domain templates and configs. Online mode uses JMX to interact with managed beans.
- Common tasks include deploying applications, starting/stopping servers, and browsing or editing configuration settings and runtime data.
- Customizations like adding custom commands or supporting custom managed beans are also discussed.
The Kubernetes WebLogic revival (part 2)Simon Haslam
The second of two sessions Martien & I presented at UKOUG Techfest19 in Brighton, UK about:
(a) Running WebLogic in containers, managed by Kubernetes
(b) Oracle's Container Engine for Kubernetes (OKE) - Oracle Cloud's managed k8s service
Docker allows packaging applications and dependencies into containers to ensure applications work seamlessly across environments. Docker images are blueprints used to create containers, which are runnable instances of images. Dockerization is useful for standardizing environments and ensuring applications run the same on different machines through containerization. The document demonstrates creating an MSSQL server Linux container using Docker by running a command to specify environment variables and port mapping.
This presentation provides a comprehensive overview of Maven 3 including lifecycles and a detail of the default lifecycle and the associated phases within.
This presentation covers the basics of dockers, its security related features and how certain misconfigurations can be used to escape from container to host
네이버 클라우드 플랫폼의 Kubernetes Service(NKS)에서 Pod들의 오토스케일을 적용하는 방법에 대해서 소개합니다 | Introduce how to apply autoscale of Pods in the Kubernets Service (NKS) of Naver Cloud Platform
Infrastructure-as-Code (IaC) using TerraformAdin Ermie
Learn the benefits of Infrastructure-as-Code (IaC), what Terraform is and why people love it, along with a breakdown of the basics (including live demo deployments). Then wrap up with a comparison of Azure Resource Manager (ARM) templates versus Terraform, consider some best practices, and walk away with some key resources in your Terraform learning adventure.
Docker 101 is a series of workshops that aims to help developers (or interested people) to get started with docker.
The workshop 101 is were the audience has the first contact with docker, from installation to manage multiple containers.
- Installing docker
- managing images (docker rmi, docker pull)
- basic commands (docker info, docker ps, docker images, docker run, docker commit, docker inspect, docker exec, docker diff, docker stop, docker start)
- Docker registry
- container life cycle (running, paused, stopped, restarted)
- Dockerfile
Docker allows users to package applications with all their dependencies into standardized units called containers that can run on any Linux server. Containers are more lightweight than virtual machines because they share the host operating system and only require the additional libraries and binaries needed to run the application rather than a full guest operating system. Docker uses containers and an image format to deploy applications in a consistent manner across development, testing, and production. The document provides examples of how to define a Dockerfile to build an image, run containers from images using docker-compose, and common Docker commands.
1. Traditional database development faces issues like lack of source control, tedious deployment scripts, and manual processes.
2. DevOps principles like continuous integration, static code analysis, and automation can help address these issues. Database changes can be tracked in source control and deployed automatically.
3. There are different approaches to database deployment like state-based using DACPAC files or migration-based using incremental scripts stored in source control. Tools like SSDT, ReadyRoll, and Flyway support these approaches.
Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...Docker, Inc.
This lightning talk will show you how simple it is to apply CI to the creation of Docker images, ensuring that each time the source is changed, a new image is created, tagged, and published. I will then show how easy it is to then deploy containers from this image and run tests to verify the behaviour.
This document provides an overview and agenda for a Docker networking deep dive presentation. The presentation covers key concepts in Docker networking including libnetwork, the Container Networking Model (CNM), multi-host networking capabilities, service discovery, load balancing, and new features in Docker 1.12 like routing mesh and secured control/data planes. The agenda demonstrates Docker networking use cases like default bridge networks, user-defined bridge networks, and overlay networks. It also covers networking drivers, Docker 1.12 swarm mode networking functionality, and how concepts like routing mesh and load balancing work.
(Draft) Kubernetes - A Comprehensive OverviewBob Killen
Kubernetes is an open-source system for automating deployment, scaling, and management of containerized applications. It groups containers that make up an application into logical units for easy management and discovery called pods. Its main components include a master node that manages the cluster and worker nodes that run the applications. It uses labels to organize resources and selectors to group related objects. Common concepts include pods, services for discovery/load balancing, replica controllers for scaling, and namespaces for isolation. It provides mechanisms for configuration, storage, security, and networking out of the box to ensure containers can run reliably and be easily managed at scale.
This document provides an overview of the WebLogic Scripting Tool (WLST) and discusses:
- WLST can be used offline to create and modify domains or online to manage running domains.
- Offline mode uses the configuration framework to modify domain templates and configs. Online mode uses JMX to interact with managed beans.
- Common tasks include deploying applications, starting/stopping servers, and browsing or editing configuration settings and runtime data.
- Customizations like adding custom commands or supporting custom managed beans are also discussed.
The Kubernetes WebLogic revival (part 2)Simon Haslam
The second of two sessions Martien & I presented at UKOUG Techfest19 in Brighton, UK about:
(a) Running WebLogic in containers, managed by Kubernetes
(b) Oracle's Container Engine for Kubernetes (OKE) - Oracle Cloud's managed k8s service
Docker allows packaging applications and dependencies into containers to ensure applications work seamlessly across environments. Docker images are blueprints used to create containers, which are runnable instances of images. Dockerization is useful for standardizing environments and ensuring applications run the same on different machines through containerization. The document demonstrates creating an MSSQL server Linux container using Docker by running a command to specify environment variables and port mapping.
This presentation provides a comprehensive overview of Maven 3 including lifecycles and a detail of the default lifecycle and the associated phases within.
This presentation covers the basics of dockers, its security related features and how certain misconfigurations can be used to escape from container to host
네이버 클라우드 플랫폼의 Kubernetes Service(NKS)에서 Pod들의 오토스케일을 적용하는 방법에 대해서 소개합니다 | Introduce how to apply autoscale of Pods in the Kubernets Service (NKS) of Naver Cloud Platform
Infrastructure-as-Code (IaC) using TerraformAdin Ermie
Learn the benefits of Infrastructure-as-Code (IaC), what Terraform is and why people love it, along with a breakdown of the basics (including live demo deployments). Then wrap up with a comparison of Azure Resource Manager (ARM) templates versus Terraform, consider some best practices, and walk away with some key resources in your Terraform learning adventure.
Docker 101 is a series of workshops that aims to help developers (or interested people) to get started with docker.
The workshop 101 is were the audience has the first contact with docker, from installation to manage multiple containers.
- Installing docker
- managing images (docker rmi, docker pull)
- basic commands (docker info, docker ps, docker images, docker run, docker commit, docker inspect, docker exec, docker diff, docker stop, docker start)
- Docker registry
- container life cycle (running, paused, stopped, restarted)
- Dockerfile
Docker allows users to package applications with all their dependencies into standardized units called containers that can run on any Linux server. Containers are more lightweight than virtual machines because they share the host operating system and only require the additional libraries and binaries needed to run the application rather than a full guest operating system. Docker uses containers and an image format to deploy applications in a consistent manner across development, testing, and production. The document provides examples of how to define a Dockerfile to build an image, run containers from images using docker-compose, and common Docker commands.
1. Traditional database development faces issues like lack of source control, tedious deployment scripts, and manual processes.
2. DevOps principles like continuous integration, static code analysis, and automation can help address these issues. Database changes can be tracked in source control and deployed automatically.
3. There are different approaches to database deployment like state-based using DACPAC files or migration-based using incremental scripts stored in source control. Tools like SSDT, ReadyRoll, and Flyway support these approaches.
Build, Publish, Deploy and Test Docker images and containers with Jenkins Wor...Docker, Inc.
This lightning talk will show you how simple it is to apply CI to the creation of Docker images, ensuring that each time the source is changed, a new image is created, tagged, and published. I will then show how easy it is to then deploy containers from this image and run tests to verify the behaviour.
This document provides an overview and agenda for a Docker networking deep dive presentation. The presentation covers key concepts in Docker networking including libnetwork, the Container Networking Model (CNM), multi-host networking capabilities, service discovery, load balancing, and new features in Docker 1.12 like routing mesh and secured control/data planes. The agenda demonstrates Docker networking use cases like default bridge networks, user-defined bridge networks, and overlay networks. It also covers networking drivers, Docker 1.12 swarm mode networking functionality, and how concepts like routing mesh and load balancing work.
(Draft) Kubernetes - A Comprehensive OverviewBob Killen
Kubernetes is an open-source system for automating deployment, scaling, and management of containerized applications. It groups containers that make up an application into logical units for easy management and discovery called pods. Its main components include a master node that manages the cluster and worker nodes that run the applications. It uses labels to organize resources and selectors to group related objects. Common concepts include pods, services for discovery/load balancing, replica controllers for scaling, and namespaces for isolation. It provides mechanisms for configuration, storage, security, and networking out of the box to ensure containers can run reliably and be easily managed at scale.
ASP.NET MVC è una piattaforma aperta costruita come un puzzle di componenti. Per personalizzare il comportamento dei componenti interni del sistema è quindi sufficiente rimuovere uno dei tasselli e sostituirlo con uno scritto da noi. Un'operazione resa semplice ed immediata dall'interfaccia Dependency Resolver.
Presentazione sull'evoluzione di Struts, primo framework web MVC in ambito Java e sul merger con WebWork, effettuata durante la (prima!) tappa di Torino della prima edizione di JavaDay '06.
This set of design patterns are related to Enterprise Patterns. In it you can find, J2EE, Presentation, Business & Integration Patterns (such as: ApplicaCon Controller, Data Transfer Object (DTO), Business Object (BO) & Data Access Object (DAO) among others ...)
Rich client application: MVC4 + MVVM = Knockout.jsGiorgio Di Nardo
La sempre maggiore diffusione di device diversificati (PC, Notebook, Tablet, Smartphone, ecc.) su piattaforme diverse, rilancia l'utilizzo delle Web Application come strumento per raggiungere il maggior numero di potenziali clienti con il minimo sforzo. Le capacità avanzate dei nuovi device e le ultime tecnologie ci consentono però di evolvere il concetto classico di applicazione Web in una declinazione più veloce, più responsiva, più accattivante: vediamo come.
A prima vista, MVC “is all about the presentation layer”. In realtà, per trarre il massimo giovamento da questo toolkit è necessario progettare l’intera soluzione utilizzando criteri ad hoc.
2. Introduzione
• Spring è un framework applicativo, open source, che ha l’obiettivo semplificare lo sviluppo di
applicazioni Java di tipo enterprise.
• Creato nel 2002 come approccio alternativo alla piattaforma Java EE per raggiungere scopi
analoghi con un modello di programmazione più semplice e più leggero.
• Il suo successo è stato tale da aver profondamente influenzalo l’evoluzione della specifica EJB.
• Oggi Spring è un framework modulare, in grado di supportare una varietà di necessità applicative:
come le applicazioni web, la sicurezza, i big data e il cloud.
1Ml download
VM-Ware
Pivotal
Struts
(2000)
Hibernate
(2001)
EJB3
(2000)
3. IoC Vs DI
• La caratteristica per la quale Spring è maggiormente riconosciuto è la
sua implementazione del pattern Dependency Injection che è uno
degli aspetti fondamentali dell’Inversion of Control (IoC).
• IoC: è un principio dell'ingegneria del software grazie al quale il
controllo di oggetti o porzioni di un programma viene trasferito a un
contenitore o framework. Può essere ottenuto in diversi modi:
Strategy design pattern, Service Locator pattern, Factory pattern, and
Dependency Injection (DI).
• DI: è una implementazione dell’IoC in cui il controllo invertito è
l’impostazione delle dipendenze di un oggetto.
4. Core Coponents
• Il modulo core è la componente fondamentale del framework ed
implementa la Dependency Injection;
• Il bean module fornisce le classi factory per l’istanziazione dei bean;
• Il modulo context, implementato al di sopra dei moduli core e bean,
fornisce l’accesso a tutti i bean definiti in funzione dei relativi contesti;
• Il modulo SpEL fornisce un expression language per la manipolazione
dei bean a runtime.
5. Approccio Tradizionale
Object A
Object B
Object C
Class B
Class C
• Per utilizzare l’oggetto B, l’oggetto A lo
deve istanziare dalla Classe B.
• Per utilizzare l’oggetto C, l’oggetto B lo
deve istanziare dalla Classe C.
6. Problemi e limitazioni
• Le classi sono fortemente accoppiate;
• Difficile da testare;
• Non favoriscono il riuso;
• Difficili da comprendere (il flusso principale è poco evidente);
• Difficile da manutenere;
• L’utilizzo delle interfacce non risolvono il problema ????
7. Nuovo Approccio
…
<beans>
<bean id=A class=A>
<property name=b>
<ref bean=B>
</property>
</bean>
<bean id=B class=B>
<property name=c>
<ref bean=C>
</property>
</bean>
<bean id=C class=C/>
</beans>
Class B{
private CGroup c;
…
Public void setCGroup(CGroup c){
this.c = c;
}
}
Class C
Class A{
private BGroup b;
…
Public void setBGroup(BGroup b){
this.b = b;
}
}
Interface BGroup
Class B’
Class B’’
Interface CGroup
Class C’
Class C’’
changes
8. Concetti
• Due forme di DI: Setter Injection e Constructor Injection;
• Disaccoppiamento del codice garantito dall’utilizzo delle interfacce;
• Spring IoC Container è la piattaforma mentre la bena factory produce
i bean;
17. Gestione delle Transazioni
• Interfaccia che implementa la strategia di gestione delle transazioni:
Implementazioni Utilizzo
DataSourceTransactionManager Gestione di un singolo JDBC DataSource
JtaTransactionManager Utilizza un provider JTA fornito da Java EE
Container o configurato localmente
JpaTransactionManager Utilizza un JPA EntityManagerFactory
HibernateTransactionManager Utilizza un singolo Hibernate SessionFactory
25. Introduzione
• Spring MVC è una delle componenti più utilizzati, dopo Spring Core.
• Rispetto alla soluzione Java Server Faces, che ricordiamo è uno standard J2EE,
Spring MVC è molto più simile alla tecnologia Servlet.
• La principale critica rivolta alle specifica JSF, infatti, è che introduce una eccessiva
astrazione nascondendo concetti di base che è bene conoscere.
27. ContextLoaderListener vs DispatcherServlet
• Spring può gestire più contesti contemporaneamente,
un root context ed uno o più child context.
• ContextLoaderListener crea il root context
dell’applicazione.
• DispatcherServlet crea i child context per ogni
servlet entry.
• Child context possono accedere ai bean definiti nel
root context.
• Bean nel root context non possono accedere
“direttamente” ai bean nel child context.
• Tutti i contesti sono inseriti nel ServletContext.
• La classe WebApplicationContextUtils
permette l’accesso ai root context.
36. Introduzione
• Consente di gestire in modo semplice e trasparente l’autenticazione
(ovvero chi sei) e la profilazione (ovvero cosa sei autorizzato a fare)
degli utenti che accedono ad una applicazione web.
• Implementa funzionalità che fanno fronte alle principali vulnerabilità
(OWASP):
• Cross-site request forgery (CSRF);
• Session Fixation;
• Attacco XSS;
• Etc.
45. Introduzione
• Rispetto J2EE in cui la DI è gestita solamente tramite annotation con
l’XML Spring mantiene separata la configurazione piuttosto che
diffonderla nel codice.
• L’utilizzo dell’XML comporta però diverse conseguenze:
• Non è type-safe e un qualsiasi errore nel file è rilevato esclusivamente allo
startup del contesto di Spring.
• L’XML è verboso al punto da divenire molto grandi in applicazioni
mediamente complesse, per cui si è costretti a suddividere la configurazione
in più file.
• Non è possibile navigare nei vari file di configurazione e per trovare dove un
bean è definito è necessario eseguire una ricerca full-text.
46. Configurazione
Indica al container che
la classe contiene
elementi di
configurazione.
Vengono eseguiti ed il
risultato inserito nel
contesto (<bean>).
ApplicationContext
testBean
bean1
bean2
Risolve l’ambiguità nel
recupero di un bean di
tipo TestBean.
50. Modularizzazione
• Una best practice abbastanza comune è quella di suddividere la
configurazione in diversi classi: es. una per i servizi ed una per i DAO.
1
2
I bean registrati un una
classe di configurazione
diverse possono essere
importati un un’altra
classe semplicemente
utilizzando l’autowiring.
56. Introduzione
• Il suo scopo è di unificare e semplificare l’accesso a differenti tipi di
basi di dati, sia relazionali che non (NoSQL).
• DAO vs Repository.
• Supporta la specifica JPA (quindi tutti gli ORM che la implementano).
• Le entità sono dei POJO annotati con @Entity che hanno un solo
identificativo @Id.
• Il concetto principale del framework è la marker interface Repository:
1 2
57. Gerarchia
Domain Class
(es. Utente)
ID type della
domain class
public interface UserRepository extends CrudRepository<User, Long>
Fornisce funzionalità CRUD
es: save(), delete(), find(), etc.
Aggiunge metodi di paginazione
Page<T> findAll(Pageable pageable);
JPA specific extension
58. Query
• Le query possono essere “derivate” in base al nome del metodo
find…By…, read…By…, query…By…, count…By…, get…By…
Nome dell’entità eventualmente preceduta
da Distinct , Top, First:
- findUserBy…
- findDistinctUserBy…
- queryFirst10By…
- findTop3By…
Elenco delle proprietà con diversi qualificatori:
- findUserByLastnameOrFirstname
- findUserByLastnameAndFirstname
- findUserByLastnameIgnoreCase
- finduserByLastnameAndFirstnameAllIgnoreCase
Property traversal:
59. Named Query
• Binding della query utilizzando l’annotazione JPA @Query
Query JPQL o Native
60. Query By Example
• Consente di generare query a partire da un “esempio” …
62. Introduzione
• E’ un framework per l’elaborazione batch di grandi volumi di dati.
• Sorgenti differenti: database, flat file (xml, csv, etc.), code JMS, JPA, etc.
• Gestione automatica dei retry e failure.
• Tracciamento della stato di esecuzione dei batch.
• Supporto a differenti modalità di avvio dei job: script; http, etc.
• Scomposizione di grandi quantità di dati e processamento parallelo.
63. Componenti
Componente
responsabile
dello start dei
job
Componente responsabile della
conservazione delle
informazioni di esecuzione. Il
repository può essere in-
memory o su DB dedicato
La descrizione
del processo che deve
essere eseguito
Ogni step consiste di
tre attività:
- Data reading.
- Data processing.
- Data writing.
65. Job
Job istanziato sui
parametri di avvio Parametri su cui è
avviato il Job
Contiene informazioni sull’esecuzione del
Job:
- stato,
- data ed ora di avvio e completamento,
- eventuale eccezione,
- etc.
La singola esecuzione di uno step che
contiene tutte le informazioni di
esecuzione:
- stato,
- data ed ora di avvio e completamento,
- numero di letture,
- scritture e commit,
66. Elaborazione
• Elaborazione a chunk (blocchi).
• I dati vengono letti e processati a blocchi utilizzando l’ItemReader e
l’ItemProcessor.
• Solamente quando è raggiunto l’intervallo di commit richiesto, l’intero
blocco è passato all’ItemWriter.
72. Schedulazione
• Per la schedulazione dei job è necessario integrare un tool che si
occupa dell’avvio temporizzato dei batch: TaskScheduler di Spring e il
più noto Quartz.
74. Introduzione
• Spring Boot è una soluzione per realizzare in modo semplice
applicazioni su piattaforma Spring, producendo stand-alone App
eseguibili in java.
• Includono Tomcat, Jetty o Undertow (no WAR but JAR).
• Configurazione completa con Spring JavaConfig (no XML).
• Focalizzato sui Microservizi.
• Spring Inizializer: https://start.spring.io
78. Introduzione
• Spring Integration è una architettura di
messaggistica che fornisce una
implementazione dei pattern EIP, mettendo
a disposizione una serie di componenti che
possono essere combinati per realizzare
un’applicazione EAI.
• Enterprise Application Integration (EAI) si
riferisca da un software o ad una
architettura software in grado di integrare
applicazioni enterprise eterogenee.
79. Componenti Principali
1. Producer (sender) ed i consumer (receiver) detti endpoint che si scambiano
messaggi;
2. Pipe dette anche channel che rappresentano i canali di comunicazione tra
producer e consumer;
3. Messaggi che trasportano l’informazione scambiata.
82. PayPal 4 Dummies
• BASE
• Interfaccia di Login e Registrazione dei propri dati carta
• Servizio REST di pagamento
• Batch di rendicontazione
• AVANZATO
• Integrare servizio bancario di pagamento
Editor's Notes
Entrambi gli approcci quindi hanno vantaggi e svantaggi, però riportare la configurazione nel codice ha diverse implicazioni interessanti:
Tutti gli IDE supportano il type-checking, il code completion, il refactoring e la ricerca delle referenze nel codice.
Per uno sviluppatore java è molto più semplice codificare concetti come: creazione di bean, inizializzazione, etc. in java piuttosto che con inventare metodi complicati in XML.
l’uso di design pattern specifici possono rendere il codice (di configurazione) chiaro e leggibile.
JavaConfig si candida quindi come una valida alternativa sia all’uso dell’XML che all’autowiring. Esso infatti unisce il vantaggio del disaccoppiamento dell’XML con il compile-time check di Java. In un certo senso JavaConfig può essere visto come l’equivalente di un file XML ma codificato in linguaggio Java.