Qual é a sua “melhor prática” para o primeiro projeto Java EE Spring?[fechado]

StackOverflow https://stackoverflow.com/questions/8569

  •  08-06-2019
  •  | 
  •  

Pergunta

Atualmente estou tentando entrar no desenvolvimento Java EE com o framework Spring.Como sou novo no Spring, é difícil imaginar como um bom projeto em execução deve começar.

Voc ~ e tem algum Melhores Práticas, dicas ou principais NÃO FAÇA para começar?Como você começou com o Spring - grandes projetos ou pequenos aplicativos semelhantes a tutoriais?Qual tecnologia você usou imediatamente:AOP, hibernação complexa...

Foi útil?

Solução

Pequena dica - achei útil modularizar e rotular claramente meus arquivos de contexto XML do Spring com base na preocupação do aplicativo.Aqui está um exemplo de um aplicativo da web em que trabalhei:

  • MyProject / src / main / resources / spring /
    • fonte de dados.xml - Meu único bean de fonte de dados.
    • persistência.xml - Meus DAOs/Repositórios.Depende de datasource.xml feijões.
    • serviços.xml - Implementações da camada de serviço.Geralmente, esses são os beans aos quais aplico a transacionalidade usando AOP.Depende de persistence.xml feijões.
    • controladores.xml - Meus controladores Spring MVC.Depende de services.xml feijões.
    • visualizações.xml - Minhas implementações de visualização.

Esta lista não é perfeita nem exaustiva, mas espero que ilustre esse ponto.Escolha qualquer estratégia de nomenclatura e granularidade que funcione melhor para você.

Na minha experiência (limitada), vi essa abordagem produzir os seguintes benefícios:

Arquitetura mais clara

Os arquivos de contexto claramente nomeados oferecem aos que não estão familiarizados com a estrutura do seu projeto um local razoável para começar a procurar definições de feijão.Pode tornar um pouco mais fácil a detecção de dependências circulares/indesejadas.

Ajuda no design de domínio

Se você quiser adicionar uma definição de bean, mas ela não se encaixa bem em nenhum dos seus arquivos de contexto, talvez haja um novo conceito ou preocupação surgindo?Exemplos:

  • Suponha que você queira tornar sua camada de serviço transacional com AOP.Você adiciona essas definições de bean a services.xml, ou coloque-os em seus próprios transactionPolicy.xml?Converse sobre isso com sua equipe.Sua política de transação deve ser conectável?
  • Adicione beans Acegi/Spring Security ao seu controllers.xml arquivo ou crie um security.xml arquivo de contexto?Você tem requisitos de segurança diferentes para implantações/ambientes diferentes?

Teste de integração

Você pode conectar um subconjunto do seu aplicativo para testes de integração (ex:dados os arquivos acima, para testar o banco de dados você precisa criar apenas datasource.xml e persistence.xml feijões).

Especificamente, você pode anotar uma classe de teste de integração da seguinte forma:

@ContextConfiguration(locations = { "/spring/datasource.xml" , "/spring/persistence.xml" })

Funciona bem com o Beans Graph do Spring IDE

Ter muitos arquivos de contexto focados e bem nomeados facilita a criação de BeansConfigSets personalizados para visualizar as camadas do seu aplicativo usando Spring IDE Gráfico de feijão.Já usei isso antes para fornecer aos novos membros da equipe uma visão geral de alto nível da organização de nosso aplicativo.

Outras dicas

Concentre-se primeiro no coração da Primavera:Injeção de dependência.Depois de ver todas as maneiras como o DI pode ser usado, comece a pensar nas peças mais interessantes, como AOP, Remoting, modelos JDBC, etc.Portanto, meu melhor conselho é deixar o uso do Spring crescer a partir do núcleo.

Melhor prática?Se você estiver usando a configuração XML padrão, gerencie o tamanho de arquivos individuais e comente-os criteriosamente.Você pode pensar que você e outras pessoas entenderão perfeitamente suas definições de bean, mas na prática elas são um pouco mais difíceis de recuperar do que o antigo código Java.

Boa sorte!

Em primeiro lugar, Spring é sobre modularidade e funciona melhor se nos concentrarmos em escrever pequenos componentes que fazem uma coisa e bem.

Se você seguir as práticas recomendadas em geral, como:

  • Definindo uma interface em vez de classes abstratas
  • Tornando os tipos imutáveis
  • Mantenha o mínimo de dependências possível para uma única classe.
  • Cada turma deve fazer uma coisa e fazê-la bem.Grandes classes monolíticas são uma droga, são difíceis de testar e de usar.

Se seus componentes forem pequenos e seguirem os dogmas acima, eles deverão ser fáceis de conectar e brincar com outras coisas.Os pontos acima também são naturalmente verdadeiros para a própria estrutura Spring.

PS

Não dê ouvidos aos pontos acima, eles estão falando sobre como fazer qualquer coisa.É mais importante aprender a pensar do que a fazer alguma coisa.Os humanos podem pensar, repetir algo não é inteligente, pensar é.

Na verdade eu gostei bastante da Primavera..Foi uma brisa fresca em seus J2EE Java Beans comuns.

Eu recomendo implementar o exemplo que o Spring fornece:

http://static.springframework.org/docs/Spring-MVC-step-by-step/

Além disso, decidi ir com tudo e adicionei o Hibernate ao meu aplicativo Spring;), porque o Spring oferece excelente suporte para o Hibernate...:)

No entanto, tenho um NÃO, que aprendi da maneira mais difícil (produto em produção)...Se você implementar apenas a interface Controller e retornar um objeto ModelAndView com alguns dados fornecidos com a interface, o Spring garbadge coleta esses recursos, para tentar armazenar em cache esses dados.Portanto, tenha cuidado ao colocar grandes dados nesses objetos ModelAndView, porque eles ocuparão a memória do servidor enquanto o servidor estiver no ar, assim que a página for visualizada...

Comece aqui - na verdade acho que está entre os melhores livros de desenvolvimento de software que já li.
Especialista em Spring MVC e fluxo da Web

Aprenda a nova configuração baseada em anotações para classes MVC.Isso faz parte do Spring 2.5.O uso de classes baseadas em anotações tornará a escrita de testes de unidade muito mais fácil.Também ser capaz de reduzir a quantidade de XML é uma coisa boa.

Ah, sim, testes de unidade - se você estiver usando o Spring, é MELHOR fazer testes de unidade.:) Escreva testes de unidade para todas as suas classes da Web e da camada de serviço.

Leia sobre Domain Driven Design.O fato de você poder usar classes de objetos de domínio em todos os níveis de um aplicativo Spring significa que você terá um modelo de domínio MUITO poderoso.Aproveite isso.

No entanto, ao usar suas classes de objetos de domínio para preenchimento de formulários, você deverá prestar atenção às recentes preocupações de segurança em torno do Spring Framework. Uma discussão no lado do servidor revela como fechar a lacuna nos comentários.

Uma boa maneira de começar é concentrar-se no "Springframework".O portfólio Spring cresceu e se tornou uma grande pilha de projetos em torno de vários aspectos do software empresarial.Atenha-se ao núcleo no início e tente compreender os conceitos. Download os binários mais recentes e confira o exemplo petclinic do Spring quando estiver familiarizado com o núcleo.Dá uma boa visão geral dos vários projetos que o SpringSource tem a oferecer.

Embora a documentação seja muito boa, Eu recomendaria um livro depois de compreender os conceitos do núcleo.O que achei problemático com a documentação é que ela não é detalhada e não pode fornecer todos os detalhes necessários.

"...Qual tecnologia você usou imediatamente:AOP, Hibernate complexo..." - Eu diria que uma pergunta melhor seria perguntar o que as pessoas não usaram imediatamente.Eu adicionaria os exemplos que você cita a essa lista.

O modelo Spring MVC e JDBC seriam minhas recomendações iniciais.Você pode percorrer um longo caminho apenas com eles.

Minha recomendação seria seguir fielmente as recomendações arquitetônicas do Spring.Use suas idéias de camadas.Certifique-se de que sua camada da web seja completamente destacável do resto.Você faz isso permitindo que a camada da web interaja com o back-end somente por meio da camada de serviço.

Se você deseja reutilizar essa camada de serviço, uma boa recomendação é expô-la usando os serviços da Web Spring "contrato primeiro".Se você começar com as mensagens XML que você transmite, seu cliente e servidor podem ser completamente dissociados.

O IDE com melhor suporte Spring é o IntelliJ.Vale a pena gastar alguns dólares.

Embora já faz anos que não uso o Spring e não posso dizer que sou fã dele, sei que a ferramenta App Fuse (https://java.net/projects/appfuse/) tem sido útil para ajudar as pessoas a se inicializarem em termos de geração de todos os artefatos necessários para prosseguir.

Spring também trata muito de testes unitários e, portanto, da testabilidade de suas classes.Isso basicamente significa pensar em modularização, separação de interesses, referenciar uma classe através de interfaces etc.

Se você está apenas querendo se aventurar um pouco e ver se gosta, recomendo começar com a camada DAO, usando o suporte JDBC e/ou Hibernate do Spring.Isso irá expor você a muitos dos conceitos principais, mas faça isso de uma forma que seja fácil de isolar do resto do seu aplicativo.Esse foi o caminho que segui e foi um bom aquecimento antes de começar a construir um aplicativo completo com Spring.

Com o lançamento do Spring 2.5 e 3.0, acho que uma das práticas recomendadas mais importantes para aproveitar agora são as anotações do Spring.Anotações para controladores, serviços e repositórios podem economizar muito tempo, permitir que você se concentre na lógica de negócios do seu aplicativo e podem potencialmente fazer com que todos os seus objetos sejam simples objetos Java antigos (POJOs).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top