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>