No processo de transferência do projeto Springmvc para o Springboot, as seguintes coisas foram feitas principalmente
Além de introduzir o que e como fazê -lo, este artigo terá muita bobagem desnecessária. Para algumas discussões sobre o princípio, você também deve saber o motivo.
Configuração do perfil
Nos projetos tradicionais da primavera, o método de configuração de vários perfis é escrever vários perfis no arquivo pom.xml e, em seguida, pré -carregar o ambiente de perfil selecionado, executando um arquivo maven antes de iniciar o projeto. Após o carregamento, ao executar o projeto, ele decidirá qual arquivo .Properties é carregado na variável global com base no ambiente carregado.
E o gerenciamento de vários perfis no Springboot é muito simples.
Você pode selecionar o perfil ao executar o pacote JAR usando a linha de comando
java -jar Exemplo.jar - -spring.profiles.active = teste
Ou configure -o no aplicativo de configuração global.properties
Adicionar spring.profiles.active = teste no application.properties
Ambos os métodos acima podem iniciar o perfil de "teste", o primeiro tem maior prioridade na execução do que o último.
(A propósito, no Springboot, esses dois métodos usam essencialmente o método "Configuração externa" para editar e substituir o ambiente)
Além disso, cada perfis independentes é configurado no formato "Application-xxx.properties" para cada ambiente diferente, por exemplo:
Quando precisamos testar se o perfil é carregado normalmente, podemos escrevê -lo no arquivo .Properties correspondentes
Server.port = 9080
Você pode ver se essa porta foi iniciada na inicialização.
Aqui você pode mencionar a ordem em que o Springboot carrega arquivos de configuração
Variáveis globais são lidas do arquivo de propriedades
Na seção anterior, escrevemos a configuração de propriedades para diferentes ambientes. Aqui, escreveremos sobre se essas propriedades estiverem escritas em variáveis globais, o que é conveniente para chamadas diretas em outros lugares posteriormente.
/*** Variável global*/public class Global {public static string ExpleThPath; @Value ("$ {exemplo_path}") public void setExamplePath (String exemplo) {global.examplePath = ExplethPath; }} Dessa forma, colocaremos o arquivo .Properties no
exemplo_path = http: // localhost: 9090
Esta propriedade é lida na variável global.
Fonte de dados e configuração mybatis
No projeto tradicional da primavera, use o mybatis para se conectar ao banco de dados
Tudo isso está configurado no arquivo de configuração XML, que é bastante pesado. No Springboot, tente evitar essa configuração XML.
Mybatis agora forneceu suporte ao Springboot. Precisamos adicionar apenas a dependência Mybatis-Spring-Boot-Starter, e ela fará o seguinte para nós:
Então, na configuração do Mybatis do Springboot, precisamos fazer o seguinte:
Preencha as informações do banco de dados no aplicativo- {perfil} .Properties, por exemplo:
spring.dataSource.url = jdbc: oracle: thin:@// localhost: 1234/exemplospring.dataSource.username = rootspring.datasource.password = 123456spring.datas Ource.driver-class-name = oracle.jdbc.driver.oracledriverspring.datasource.maxactive = 10spring.datasource.maxidle = 5spring.datasource.maxwait = -1
Dessa forma, registramos o feijão DataSource no contexto da primavera.
Crie um arquivo mybatisconfig e substitua XML por Java:
/*** Criado por Wutaoyu em 2017/12/7. */@Configuration@EnabetransactionManagement@MapperScan ("com.example.db.dao") classe pública mybatisconfig {@aUTowired Private DataSource DataSource; @Bean (name = "sqlSessionFactory") public sqlSessionFactory sqlSessionFactoryBean () {sqlSessionFactoryBean sqlSession = new SQLSessionFactoryBean (); sqlSession.SetDataSource (DataSource); tente {// Adicione XML Directory ResourceptatternResolver resolver = new PathMatchingResourCepTatternResolver (); sqlsession.setMapperLocations (resolver.getResources ("ClassPath: mapeamento/*. xml")); return sqlSession.getObject (); } catch (Exceção e) {e.printStackTrace (); lançar nova execução de tempo de execução (e); }} @Bean public sqlSessionTemplate sqlSessionTemplate (sqlSessionFactory sqlSessionFactory) {return new SQLSessionTemplate (sqlSessionFactory); } @Bean Public PlatformTransactionManager AnoTationDriveTransactionManager () {Retorne Novo DataSourCetransactionManager (DataSource); } @Bean (name = "Examplesequence") public oracleseQuencemaxValueIncrementer ExamplesequenceBean () {ORACLESEQUENCEMAXVALUEIRCRENTER EXEMPLEMEQUENCE = novo oracleseQuencemaxValueIrcreler (); ExampleseQuence.SetIncrelerName ("ExempliC_Seq"); ExampleseQuence.SetDataSource (DataSource); Retornar Examperequence; }} @Mapperscan é digitalizar o mapeador abaixo deste pacote.
Além disso, a localização do mapper.xml aqui é criar uma pasta de mapeamento na pasta de recursos e colocá -la abaixo.
A função aqui é semelhante ao XML. É para descrever o método tradicional de expressão XML nos arquivos .java e injetar essencialmente o DataSource passo a passo.
Como o exemplo usa um banco de dados Oracle, o último exemplo é um exemplo para ilustrar como adicionar uma sequência.
Anotação de interfaces para todos os mapeadores @mapper
Por exemplo:
@MapperPublic Interface UserMApper {...} Configuração do arquivo de log
O logback suporta configuração externa na forma de propriedades, mas para configurações relativamente detalhadas, ainda é necessário usar a configuração XML.
Para que o arquivo XML leia alguns caminhos do arquivo .Properties, configurações estáticas que podem exigir modificação frequente, é necessário configurá-lo em logback-spring.xml
<Property Resource = "Application.Properties" /> <Property name = "log.root.level" value = "$ {log.root.level}" /> <names name = "log.path" value = "$ {Log.path}" /> <nome da propriedade = "log.modulename" = "$ {Log.module}" Dessa forma, você pode colocar o arquivo Application.Properties no
log.path =/home/logs/Exemplelog.root.level = infolog.module = exemplo
Leia-o no logback-spring.xml e depois ligue para.
Configuração do WebConfig
A principal função do webconfig é substituir o web.xml e spring-mvc.xml para alguma configuração básica.
1. Sobre Web.xml
Projetos de primavera tradicionais Configure um arquivo web.xml. A função deste arquivo é: quando colocamos o pacote de guerra no contêiner de aplicativos (como o TomCat) para executar, o contêiner carrega filtro (filtro), servlet, página de erro, lista de chamas de boas-vindas, ouvinte (ouvinte), parâmetros de contexto (parâmetros de contexto), resource-ref (configuração de recursos) e outras configurações de acordo com a web.
O ouvinte, incluindo o contextLoaderListener, é carregado aqui para montar automaticamente as informações de configuração do ApplicationContext ao iniciar o contêiner.
<Ilanter> <lister-class> org.springframework.web.context.contextLoaderListener </ouvinte-class> </lister>
Este ApplicationContext é o núcleo do COI da primavera (herdado do BeanFactory), e todos os feijões singleton serão instantados neste momento.
Além disso, um DispatcheServlet muito importante no Springmvc também é carregado aqui e é determinado qual arquivo XML para configurar o DispatcheserServlet.
<servlet> <servlet-name>SpringMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mvc.xml</param-value> </init-param> <Oad-on-startup> 1 </load-on-startup> <!-<sync-suported> true </sync-suported>-> </servlet>
2. Sobre Spring-mvc.xml
spring-mvc.xml é um arquivo de configuração Springmvc. Aqui podemos configurar feijões que precisam ser personalizados, como ViewResolver, multipartresolver, conversor de mensagens HTTP, interceptador personalizado, etc.
Tudo isso acima não tem nada a ver com o Springboot, principalmente para saber o motivo e o que. Se você não estiver interessado, pode ignorá -lo.
Vamos falar sobre a configuração do Springboot. O Springboot tem um ditado que "a convenção é melhor que a configuração", o que significa tentar usar o método acordado, em vez de configuração especificamente direcionada (configuração quando a configuração especial é necessária).
Depois de introduzir a dependência "Out of the Box" da Web Spring-Boot-Starter-Web, a Spring-Boot-Starter-Web contém uma mola-boot-autoconfigure.
Com essa dependência, você pode usar a anotação @enableautocongiguration. Esta anotação adivinhará a configuração da primavera necessária com base nas dependências introduzidas e o ajudará a configurá -la. Como a Spring-Boot-Starter-Web foi introduzida, esta anotação configurará a configuração relacionada à Web.
Além disso, a anotação @enableautocongiguration foi incluída na anotação @springbootApplication. Portanto, basta anotar @springbootApplication na classe Startup ExemploserverApplication e você pode configurar automaticamente a Web para configurá -la.
Obviamente, podemos ter algumas configurações especiais e, neste momento, podemos criar um webconfig para personalizar
/*** Criado por Wutaoyu em 2017/12/8. */ @ConfigurationPublic Class WebConfig estende o webmvcConfigureRAdApter {@Override public void ConfigureMessaGeconverters (list <httpmessageConverter <? >> conversores) {converter.add (marshallinghttpmessageconverter (); } public marshallinghttpmessageConverter marshallinghttpmessageConverter () {marshallinghttpmessageConverter marshallinghttpmessageConverter = novo marshallinghttpmessageConverter (); List <PusetyPe> mediatypes = new ArrayList <AcretType> (); mediatypes.add (mediatype.text_xml); mediatypes.add (mediatype.application_xml); XStreamMarshaller xStreamMarShaller = new XStreamMarShaller (); marshallinghttpmessageConverter.SetSupportedMediTypes (MediaTypes); marshallinghttpmessageConverter.setMarshaller (XStreamMarshaller); marshallinghttpmessageConverter.setunMarshaller (XSTEAMMARSHALLER); retornar marshallinghttpmessageConverter; } // Atualização do arquivo de configuração @Bean (name = {"multipartresolver"}) public multipartresolver multipartresolver () {commonsmultipartresolver commonsmultipartResolver = new CommonsmultipartResolver (); Commonsmultipartresolver.setDefaultEncoding ("UTF-8"); Commonsmultipartresolver.setMaxUploadSize (10485760000l); Commonsmultipartresolver.setMaxinMemorySize (40960); retornar commonsmultipartresolver; } // Manuse de exceção @Bean Public ExceptionHandler ExceptionResolver () {ExceptionHandler ExceptionHandler = new ExceptionHandler (); retornar excepcionhandler; } // interceptor @Override public void addinterceptores (Registry InterceptPorRegistry) {Registry.addintercept (new LogIntercept ()). AddPathPatterns ("/**"); super.addinterceptores (Registro); }}Eu fiz algumas coisas neste arquivo de amostra:
Remova o excesso de injeção de feijão
Esta é uma distração, mas também é um dos problemas que realmente encontrei.
Ao realmente executar o projeto Springboot, encontrei alguns problemas que não relataram erros em projetos tradicionais de primavera, que são injeção desnecessária de feijão.
Nos projetos tradicionais da primavera, não há erro, mas em projetos de troca, é relatado. Eu acho que é porque, quando o método de classe injetado no feijão é fornecido de maneira relativamente simples, ele será repetido com alguns grãos configurados automaticamente pelo próprio Springboot e um erro será relatado.
Portanto, remova alguns feijões que não precisam ser injetados.
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.