Configuração de Infraestrutura para Aplicações Java com Spring e MyBatis

A estruturação de um projeto robusto em Java exige a integração harmoniosa de diferentes camadas, como a persistência de dados, a lógica de negócios e o controle web. Abaixo, apresentamos os arquivos de configuração fundamentais para esatbelecer esse ecossistema utilizando o ecossistema Spring e o framework MyBatis.

1. Contexto Global da Aplicação (applicationContext.xml)

Este arquivo define o núcleo da aplicação, gerenciando o pool de conexões e a integração com o mecanismo de persistência.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">

    <!-- Carregamento de variáveis externas -->
    <context:property-placeholder location="classpath:database.properties" />

    <!-- Configuração do Pool de Conexões -->
    <bean id="mainDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="${db.driver}" />
        <property name="url" value="${db.url}" />
        <property name="username" value="${db.user}" />
        <property name="password" value="${db.password}" />
    </bean>

    <!-- Integração MyBatis com Spring -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="mainDataSource" />
        <property name="configLocation" value="classpath:mybatis-settings.xml" />
    </bean>

</beans>

2. Parâmetros do Banco de Dados (database.properties)

Centraliza as credenciais e endereços de conexão para facilitar a manutenção em diferentes ambientes.

# Configurações para MySQL
db.driver=com.mysql.cj.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/sistema_db?useSSL=false&serverTimezone=UTC
db.user=admin_user
db.password=secure_pwd123

3. Definição do Path Base no JSP

Para garantir que links e recursos estáticos sejam resolvidos corretamente, utiliza-se a definição da base URL no cabeçalho dos arquivos JSP.

<%
    String path = request.getContextPath();
    String serverBase = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
%>
<base href="<%=serverBase%>">

4. Gerenciamento de Logs (log4j.properties)

Configuração para monitoramento de execução e depuração de consultas SQL.

log4j.rootLogger=INFO, console

# Appender para o console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{ISO8601} %-5p [%c] - %m%n

# Níveis específicos de logs
log4j.logger.org.mybatis=DEBUG
log4j.logger.br.com.projeto.dao=DEBUG
log4j.logger.org.springframework=WARN

5. Configurações Globais do MyBatis (mybatis-settings.xml)

Define o comportamento do motor de mapeamento objeto-relacional.

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
        <setting name="jdbcTypeForNull" value="NULL"/>
    </settings>
    
    <mappers>
        <package name="br.com.projeto.repository.mapper" />
    </mappers>
</configuration>

6. Contexto Web e MVC (spring-servlet.xml)

Responsável por gerenciar controladores, visualizações e recursos de upload de arquivos.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!-- Escaneamento de componentes web -->
    <context:component-scan base-package="br.com.projeto.controller">
        <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>

    <!-- Resolução de Views JSP -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/" />
        <property name="suffix" value=".jsp" />
    </bean>

    <!-- Handler para Upload de Arquivos -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxUploadSize" value="20971520" /> <!-- 20MB -->
        <property name="defaultEncoding" value="UTF-8" />
    </bean>

    <mvc:annotation-driven />
    <mvc:default-servlet-handler />

</beans>

7. Template de Mapeamento SQL (EntityMapper.xml)

Estrutura básica para definir operações de banco de dados vinculadas a uma interface Java.

<?xml version="1.0" encoding="UTF-8" ?>

<mapper namespace="br.com.projeto.repository.mapper.UsuarioMapper">

    <!-- Consultas SQL aqui -->

</mapper>

Tags: SpringFramework MyBatis JavaEE MySQL MVC

Publicado em 6-5 19:35 por Thomas