Giter Club home page Giter Club logo

spring-framework's Introduction

DIO - Trilha Spring Framework

Autor dos Exercícios e Repositório Original

Spring Framework

Spring é um framework open source desenvolvido para a plataforma Java que usa inversão de controle (IoC) e injeção de dependências (DI) para facilitar o desenvolvimento de aplicações.

Exercícios

Este repositório contém exercícios que demonstram a utilização do Spring Framework e que cobrem os seguintes temas:

  • Spring Framework
  • Spring Boot
  • Beans versus Components
  • Scopes
  • Properties Value e Configuration Properties
  • ORM e JPA
  • Spring Data JPA
  • Conexão com Banco de Dados
  • JPA Repository

Módulos

A arquitetura do Spring Framework consiste em funcionalidades organizadas em quase 20 módulos. Esses módulos são agrupados em Core Container, Data Access/Integration, Web, AOP (Aspect Oriented Programming), Instrumentation, e Test, como demonstrado no diagrama a seguir.

Inversão de Controle (IoC)

Inversão de controle é o princípio de transferir o controle de objetos ou porções de um programa para um framework ou container. No Spring Framework, esse princípio é implementado por meio da interface ApplicationContext e dos beans.

  • ApplicationContext: é a interface que representa o container de inversão de controle no Spring. É capaz de instanciar, configurar, montar e gerenciar o ciclo de vida de qualquer tipo de objeto;
  • Beans: são os objetos gerenciados por um container de inversão de controle como o próprio ApplicationContext ou uma de suas implementações como a WebApplicationContext.

Injeção de Dependência (DI)

Injeção de dependência é uma forma especializada de inversão de controle através da qual objetos definem suas dependências apenas por argumentos de construtor, argumentos passados a um factory method ou propriedades definidas na instância de um objeto antes que ela seja construída ou retornada de um factory method. O container então busca as dependências (anotadas com @Bean ou @Component) correspondentes a essas definições e as injeta nelas automaticamente por meio da anotação @Autowired.

Sem Inversão de Controle

Sem inversão de controle, os objetos são gerenciados manualmente:

Calculadora calculadora = new Calculadora();

Com Inversão de Controle

Com inversão de controle, os objetos são gerenciados pelo container, logo, o operador new não é utilizado:

@Autowired
Calculadora calculadora;

Bean Scopes

Quando um bean é definido, é como se fosse uma receita para a criação de instâncias reais da classe definida. Nessa definição, é possível controlar não apenas as dependências e os valores de configuração que devem ser conectados aos objetos criados a partir dela, mas também controlar o escopo desses objetos. O Spring Framework suporta seis escopos:

Escopo Descrição
singleton (Padrão) Apenas uma única instância do bean é criada e todas as requisições pelo bean retornam a mesma instância
prototype Uma nova instância do bean é criada a cada requisição pelo bean
request Uma única instância do bean é criada para o ciclo de vida de uma requisição HTTP (válido apenas em contextos WebApplicationContext cientes da web)
session Uma única instância do bean é criada para o ciclo de vida de uma sessão HTTP (válido apenas em contextos WebApplicationContext cientes da web)
application Uma única instância do bean é criada para o ciclo de vida de um ServletContext (válido apenas em contextos WebApplicationContext cientes da web)
websocket Uma única instância do bean é criada para o ciclo de um WebSocket (válido apenas em contextos WebApplicationContext cientes da web)

Referências

spring-framework's People

Contributors

lsmcodes avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.