栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Spring Boot应用程序getConnection()中使用@autowired数据源

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Spring Boot应用程序getConnection()中使用@autowired数据源

我对这个烦人的问题的最终解决方案是:

application.properties:

spring.datasource.url=jdbc:oracle:oci:@(DEscriptION = (ADDRESS = (PROTOCOL = TCP)(HOST = host_ip)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = service_name)))spring.datasource.username=usrspring.datasource.password=passspring.datasource.driver-class-name=oracle.jdbc.OracleDriver#Extra configspring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource#jpa config.spring.jpa.show-sql=truespring.jpa.hibernate.ddl-auto=updatespring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImplspring.jpa.properties.hibernate.dialect=org.hibernate.dialect.Oracle10gDialect

第一个Spring-Boot应用程序(来自spring-boot Inicializr):

package br.com.example.solicitacaoprocedimento30302;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class Solicitacaoprocedimento30302Application {    public static void main(String[] args) {        SpringApplication.run(Solicitacaoprocedimento30302Application.class, args);    }}

第二个Servlet初始化程序(来自spring-boot Inicializr):

package br.com.example.solicitacaoprocedimento30302;import org.springframework.boot.builder.SpringApplicationBuilder;import org.springframework.boot.web.support.SpringBootServletInitializer;public class ServletInitializer extends SpringBootServletInitializer {    @Override    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {        return application.sources(Solicitacaoprocedimento30302Application.class);    }}

端点(jaxws导入并带有WebApplicationContext的更改):

package br.com.example.solicitacaoprocedimento30302;import javax.annotation.Resource;import javax.jws.WebService;import javax.servlet.ServletContext;import javax.xml.ws.WebServiceContext;import javax.xml.ws.handler.MessageContext;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.context.WebApplicationContext;import org.springframework.web.context.support.WebApplicationContextUtils;import org.springframework.stereotype.Service;import br.gov.ans.padroes.tiss.schemas.AutorizacaoProcedimentoWS;import br.gov.ans.padroes.tiss.schemas.SolicitacaoProcedimentoWS;import br.com.example.solicitacaoprocedimento30302.controller.TissSolicitacaoProcedimentoController;import br.gov.ans.tiss.ws.tipos.tisssolicitacaoprocedimento.v30302.TissFault;@Service("tissSolicitacaoProcedimento")@WebService(serviceName = "tissSolicitacaoProcedimento",  portName = "tissSolicitacaoProcedimento_Port",  endpointInterface = "br.gov.ans.tiss.ws.tipos.tisssolicitacaoprocedimento.v30302.TissSolicitacaoProcedimentoPortType",  targetNamespace = "http://www.ans.gov.br/tiss/ws/tipos/tisssolicitacaoprocedimento/v30302",  wsdlLocation = "WEB-INF/wsdl/tissSolicitacaoProcedimentoV3_03_02.wsdl")public class TissSolicitacaoProcedimentoWSEndpoint {    @Autowired    private TissSolicitacaoProcedimentoController tissSolicitacaoProcedimentoController;    @Resource    private WebServiceContext context;    public AutorizacaoProcedimentoWS tissSolicitacaoProcedimentoOperation(SolicitacaoProcedimentoWS solicitacaoProcedimento)  throws TissFault    {        WebApplicationContext webApplicationContext = null;        ServletContext servletContext = (ServletContext) context.getMessageContext().get(MessageContext.SERVLET_CONTEXT);        webApplicationContext = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);        tissSolicitacaoProcedimentoController = webApplicationContext.getBean(TissSolicitacaoProcedimentoController.class);        return tissSolicitacaoProcedimentoController.tissSolicitacaoProcedimentoOperation(solicitacaoProcedimento);    }}

控制器接口:

package br.com.example.solicitacaoprocedimento30302.controller;import br.gov.ans.padroes.tiss.schemas.AutorizacaoProcedimentoWS;import br.gov.ans.padroes.tiss.schemas.SolicitacaoProcedimentoWS;import br.gov.ans.tiss.ws.tipos.tisssolicitacaoprocedimento.v30302.TissFault;public interface TissSolicitacaoProcedimentoController {    public AutorizacaoProcedimentoWS tissSolicitacaoProcedimentoOperation(SolicitacaoProcedimentoWS solicitacaoProcedimento) throws TissFault;}

控制器实现:

package br.com.example.solicitacaoprocedimento30302.controller;import br.com.example.solicitacaoprocedimento30302.TissSolicitacaoProcedimentoWSEndpoint;import org.springframework.beans.factory.annotation.Autowired;import br.gov.ans.padroes.tiss.schemas.AutorizacaoProcedimentoWS;import br.gov.ans.padroes.tiss.schemas.SolicitacaoProcedimentoWS;import br.gov.ans.padroes.tiss.schemas.ObjectFactory;import br.com.example.solicitacaoprocedimento30302.dao.ConfigVlrDAO;import br.gov.ans.tiss.ws.tipos.tisssolicitacaoprocedimento.v30302.TissFault;import java.sql.SQLException;import java.util.logging.Level;import java.util.logging.Logger;import org.springframework.stereotype.Service;@Service("tissSolicitacaoProcedimentoController")public class TissSolicitacaoProcedimentoControllerImpl implements TissSolicitacaoProcedimentoController {    @Autowired    private ConfigVlrDAO configVlrDAO;    public AutorizacaoProcedimentoWS tissSolicitacaoProcedimentoOperation(SolicitacaoProcedimentoWS solicitacaoProcedimento) throws TissFault     {        ObjectFactory objFact = new ObjectFactory();        AutorizacaoProcedimentoWS retAutorizacaoProcedimentoWS = objFact.createAutorizacaoProcedimentoWS();        retAutorizacaoProcedimentoWS.setCabecalho(objFact.createAutorizacaoProcedimentoWSCabecalho());        retAutorizacaoProcedimentoWS.setAutorizacaoProcedimento(objFact.createAutorizacaoProcedimentoWSAutorizacaoProcedimento());        try         { String item = configVlrDAO.getValor("SIS", "OBRIGA_LOGIN_WEB_SERVICE"); retAutorizacaoProcedimentoWS.setHash("item=" + item); return retAutorizacaoProcedimentoWS;        } catch (SQLException sqlEx) { Logger.getLogger(TissSolicitacaoProcedimentoWSEndpoint.class.getName()).log(Level.SEVERE, null, sqlEx); throw new RuntimeException("Erro ao acessar o banco! " + sqlEx.getMessage(), sqlEx);        } catch (Exception ex) { Logger.getLogger(TissSolicitacaoProcedimentoWSEndpoint.class.getName()).log(Level.SEVERE, null, ex); throw new RuntimeException("Falha default: " + ex.getMessage(), ex);        }    }}

仓库接口:

package br.com.example.solicitacaoprocedimento30302.dao;import java.sql.SQLException;public interface ConfigVlrDAO {    public String getValor(String owner, String variavel) throws SQLException, Exception;}

存储库实现:

package br.com.example.solicitacaoprocedimento30302.dao;import java.sql.CallableStatement;import java.sql.Connection;import java.sql.Types;import java.sql.SQLException;import org.springframework.stereotype.Repository;import org.springframework.beans.factory.annotation.Autowired;import org.apache.tomcat.jdbc.pool.DataSource;@Repository("configVlrDAO")public class ConfigVlrDAOImpl implements ConfigVlrDAO{    @Autowired    private DataSource dataSource; // Don't need to create the DataSource bean!    @Override    public String getValor(String owner, String variavel) throws SQLException, Exception     {        String ret = null;        Integer nErroProc = 0;        String sErroProc = null;        String call = "{ call OWNER.PCG_OWNER.SPR_CONFIG_VLR(?, ?, ?, ?, ?) }";        try (Connection conn = dataSource.getConnection())          { CallableStatement cstmt = conn.prepareCall(call); cstmt.setString(1, owner); cstmt.setString(2, variavel); cstmt.registerOutParameter(3, Types.VARCHAR); cstmt.registerOutParameter(4, Types.NUMERIC); cstmt.registerOutParameter(5, Types.VARCHAR); cstmt.execute(); ret = cstmt.getString(3); nErroProc = cstmt.getInt(4); sErroProc = cstmt.getString(5); if (nErroProc != 0) {     throw new Exception("Proc error = " + nErroProc.toString() + " - " + sErroProc); }        }        return ret;    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/468832.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号