SSM (Spring+Springmvc+Mybatis), atualmente uma solução de arquitetura em nível corporativo relativamente mainstream. O modelo padrão de design MVC divide todo o sistema em quatro camadas: camada de exibição, camada do controlador, camada de serviço e camada DAO. O SpringMVC é usado para ser responsável pelo encaminhamento de solicitação e gerenciamento de visualização, o Spring implementa o gerenciamento de objetos de negócios e o MyBatis é usado como mecanismo de persistência do objeto de dados.
1. Detalhes do quadro
A Spring é uma estrutura leve de desenvolvimento Java criada para resolver a complexidade do desenvolvimento de aplicativos corporativos. O objetivo da Spring não se limita ao desenvolvimento do lado do servidor. De uma simplicidade, testabilidade e perspectiva de acoplamento frouxo, qualquer aplicativo Java pode se beneficiar da primavera. Simplificando, a primavera é um controle de inversão leve (COI) e uma estrutura de contêiner orientada a tangente (AOP)
A SpringMVC é um produto subsequente do Springframework, separando os papéis de controladores, objetos de modelo, despachantes e objetos manipuladores. Essa separação os torna mais fáceis de personalizar.
Mybatis é uma estrutura de camada de persistência baseada em Java. O Mybatis fornece uma estrutura de camada de persistência, incluindo mapas SQL e objetos de acesso a dados (DAO), que elimina a configuração manual de quase todo o código e parâmetros JDBC e a recuperação dos conjuntos de resultados. Mybatis mapeia interfaces e Java para registros em bancos de dados usando XML simples ou anotações para configuração e mapeamento bruto
2. Crie um projeto Maven
1. Crie um projeto usando Maven no Eclipse
2. Pressione o padrão próximo
3. Depois de encontrar o Maven-Arquetype-Webapp, clique em Avançar
4. Preencha as informações correspondentes. GroupID é o identificador exclusivo da organização do projeto, que realmente corresponde à estrutura do pacote Java. Artifactid é o identificador exclusivo do projeto. O nome do projeto correspondente real é o nome do diretório raiz do projeto. Depois de preencher o pacote, você pode criar um pacote para você, por padrão, e não há problema em não escrever.
5. O diretório recém -construído é o seguinte
6. Maven estipula que a seguinte pasta de origem deve ser adicionada:
src/main/recursos
src/main/java
SRC/teste/recursos
src/teste/java
Antes desta etapa, é melhor clicar com o botão direito do mouse no projeto e selecionar Propriedades, depois clique em Java Build Path, sob as bibliotecas, edite a biblioteca do sistema JRE e selecione JRE padrão do espaço de trabalho.
7. Altere os caminhos de saída separadamente e o relacionamento correspondente é o seguinte:
8. Converta o projeto em projeto dinâmico da Web, clique com o botão direito do mouse no projeto e selecione Facets do projeto à esquerda.
9. Defina o caminho de publicação de arquivos durante a implantação e exclua os dois itens de teste, porque o teste é usado para teste e não requer implantação.
Configurações Publique o pacote JAR de Maven no Lib. Adicionar -> entradas de caminho de construção java -> dependências maven -> acabamento
3. Maven apresenta os pacotes de jar necessários
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd "> <ModelVersion> 4.0.0 </modelVersion> <puperiD> com.yingjun.test </groupid> <stifactId> TradingState </ArtifactId> <backaging> </Packaging> <sunders> 2.0 <sunders> 2.0 <sunders> 2.0 <sunders> [ArtifactId> TradingState </ArtifactId> <backaging> </Packaging> <sussion> 2.0s <syers> 2.0 <sunders> 2.0 <sunders> <Project.build.sourceEncoding> utf-8 </project.build.sourceEncoding> <maven.build.timestamp.format> yyyymmddhhmmss </maven.build.timestamp.format> <ling.version> 3.2.RELEase </sing. <Mybatis.Version> 3.1.1 </mybatis.version> <mybatisspring.version> 1.1.1 </mybatisspring.version> </sperties> <pendências> <.pendency> <verSerS> org.springFramework </proupId> <TerfactId> <rustreftlet> </versão/wrocerfl </serstreft> wrocerftRet> </serstreftlet> org.springframe </grupo> </dependency> <pendence> <puperid> org.springframework </foupiId> <TRORFACTID> spring-webmvc </artifactId> <versão> $ {spring.version} </versão> </dependency> <pendency> <pringa> org.springFramework </sunderid> <stiftiM> <Versão> $ {spring.version} </version> </dependency> <pendecency> <voundid> org.mybatis </groupiD> <TRAFACTID> mybatis </stifactId> <sipersy> $ {mybatis.version} </versão </dependency> <pedency> <purbridid> org.mk </artifactId> mybatis-spring </storkactId> <versão> $ {mybatisspring.version} </version> </dependency> <pendence> <voupid> mysql </purpyid> <buriFactId> mysql-conector-java </stifactId> <siEDENS> 5.1.3 <GrupidId> Junit </frupid> <TRAFACTID> JUNIT </STIFACTID> <Versão> 4.11 </version> <SCOPE> TEST </SCOPE> </Depencency> <pendency> <puriPiD> C3P0 </Groupid> <sutifactid> c3p0 </Artifactid> <ergers> 0.9.1.2 </versão <PuperId> org.aspectj </frugiD> <TRAFACTID> AspectJweaver </starfactId> <versão> 1.8.1 </version> </dependency> <pendency> <puerpid> javax.servlet </Groupid> <sutifactId> jstl </Artifactid> <veriesse> 1./versão </versão <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>3.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.2</version> <scope>provided</scope> </dependency> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.6</version> </dependency> <dependency> <PuerpId> Commons-codec </proupId> <stifactId> commons-codec </storkactid> <versão> 1.9 </versão> </dependency> <pendence> <puperid> org.apache.httpcomponents </foupid> <stifact> httpclient </stifactid> <sunders> </sustifent> </groupId> <stifact> httpclient </stifactid> <versão <versão> </groupid> <stifact> httpclient </stifactid> <sunders> <sunders> </sustifent> </groupid> <stifact> httpclient </stifactid> <sunders> <sunders> <sunders> <PuerpId> org.slf4j </roupidId> <TRAFACTID> SLF4J-API </ArtifactId> <Versão> 1.7.10 </siers> </dependency> <pendence> <puperid> org.slf4j </groupid> <TRAFACTID> SLF4J-LOG4J12 </ARTIFACTID> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.1.41</version> </dependency> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.9.13</version> </dependency> </dependencies> <build> <plugins> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>1.7</source> </Target> 1.7 </Target> </figuration> </plugin> <lugin> <ArtifactId> maven-war-plugin </ArtifactId> <Versão> 2.2 </sipers> <figuration> <uSSELONISS> 3.0 </versão> FailonMissingwebxml> FALSE </FAILONMISTINGWEBXML <FinalName> $ {Project.artifactId} _ $ {Project.version} _ $ {maven.build.timestamp} </finalName> </fruct> </ject>4. Arquivos de configuração relacionados e integração da estrutura do SSM
web.xml
<? xml versão = "1.0" coding = "utf-8"?> <web-app xmlns: xsi = "http://www.w3.org/2001/xmlschema-innslance" xmlns = "http:/java.sun.com/xmlance" xmlns = "http:/java.sun.com/xmlance" xmlns = "http:/java.sun.com/xmlance" xmlns = "http:/java.sun.com/xmlance" xmlns = "http:/java.sun.com/xmlle" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" Version = "2.4"> <!-Configure Spring-> <Context-Param> <amam-name> contextConfigLocation </param-name> <amam-value> ClassPath: spring.xml </param-value> </context--param> <visterner> <vister-class> org.springFramework.web.Context.Contet.Contet> Evite a Memória da mola Overflow ouvinte-> <Ilvier> <listener-class> org.springframework.web.util.introspectorcleanUplistener </lister-class> </lister> <!-prevenir a memória do spring flower-lister-> <vister> <lister-class> org.sPringFrumw.weber.web.webring.uter-> <vister> <lister-class> org.sPringFrun.web.web.webiniler-> <vister> <lister-cass> org.sPringFrumw.web.web.wenililer-> <Iuntener> <lister-clas> </ouvinte> <!-Configure Springmvc-> <Vertlet> <Verlet-name> springmvc </servlet-name> <Servlet-class> org.springframework.web.servlet.dispatherServlet </servlet-class> <init-param> <amoname> ContextconfigLocation </param-Nam-Numclocation </param-numnoclocated </param-numname </paramname> </param-name> </irtlet-class> <inameM> <amoname> Contextconfiglocation </param-Nam-NaMPAME </param-Nam-namenks-namenkiM> </paramname> <amam-value> ClassPath: spring-mvc.xml </param-value> </irit-param> <adargo-on-startup> 1 </olload-on-startup> </servlet> <sutlet-mapping> <Servlet-name> Springmvc </servlet> <url-stattern>/</url-tattern> <Filter-Name> EncodingFilter </filter-Name> <filter-Class> org.springframework.web.filter.characterencodingFilter </ftrids-class> <iit--param> <amam-name> Encoding </param-name> <Parames> utf-8 </initir-name> </initir-s-paraman <amam-name> forcencoding </amam-name> <amam-value> true </amam-value> </irit-param> </ftrhter> <filter-mapping> <filter-name> codingfilter </filter-name> <url--pattern>/*</url-tattern> </filter-mapping> </web-app>
spring.xml
<? xml versão = "1.0" coding = "utf-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http:/wwww.w3 xmlns: mvc = "http://www.springframework.org/schema/mvc" xmlns: context = "http://www.springframework.org/schema/aop" xmlns: tx = "httpk.org/schema/aop" xmlns: tx = "http.org/schema/aop" xmlns: tx = "http.org/schema/aop" xmlns: tx = "http.org/schema/aop" xmlns: tx = "http.org/schema/aop" xmlns: tx = "http.org/schema/aop" xmlns: tx = "http.org/schema/aop" xmlns: tx = "http.org/schema/aop" xmlns: tx = "http.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/sringop--3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd "> <!-scan, componentes dao. JDBC.Properites-> <Contexto: Property-PlaceLitder Location = "ClassPath: JDBC.Properties" /> <!-Fonte de dados C3P0-> <Bean id = "DataSource"> <names (name (namesClass "=" $ {jdb.driverLlame " /" names "(names" JD. (JDBsname ") /> <propriedade name = "user" value = "$ {jdbc.username}" /> <propriedade name = "senha" value = "$ {jdbc.password}" /> <names name = "maxpoolsize" value = "$ {c3p0.pool.ize.max}" /> <nome da propriedade = "Mininping =" MinniElsize.Max} " /> <nome "poolsize" /" /"polsize" /", c3p0.coolsize.max}" /> <nome da "minnping =" Minnize.ize.Max} " /> <nome "poolsize" /" /c3p0.izoolsize.max}" /> <nome da " /" não value = "$ {c3p0.pool.size.min}" /> <propriedade name = "InitialPoolSize" value = "$ {c3p0.pool.size.ini}" /> <nome da propriedade "adquireincrement" /"$ {c3p0.pool.size.inCrement}" /brevam < /byany> < /byannyanynyannyannyannyannyanny (belatren> < /belyannyannyannyannyannyannyannyannyannyanysaty (c3p0.Pool.size.inatrent} " /brecrend) id="sqlSessionFactory"> <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="classpath:spring-mybatis.xml" /> <property name="mapperLocations" value="classpath*:com/yingjun/test/mapping/**/*.xml" /> </bean> <bean> <property name = "BasEpackage" value = "com, yingjun.test.dao" /> <propriedade name = "sqlSessionFactoryBeanName" value = "sqlSessionFactory" /> </Sear transação-manager = "transactionManager"> <tx: atributes> <tx: método name = "add*" propagation = "requerir" /> <tx: método name = "append*" propagação = "requerir" /> <tx: salve name = "insert*propagation =" " /> <tx: método:" salvar "" propagação "" suavation "sheane" shead = "insert*" propagation = "" /> <tx: método: "salvar" "sufort" "suavation" propagation "ou requerir" /> <thod: method: "salve" "salve" supag "propagation" propagation = "" /> <Tx: método ":" Salve "" Salve "". propagation = "requerir" /> <tx: método name = "modify*" propagation = "requerir" /> <tx: método name = "edit*" propagation = "requerir" /> <tx: método name = "delete*" requery " /" requerir " /> <tx: método =" remover*"propagation =" requery " /> <tx" ": name = "deLandrepair" propagação = "requerir" /> <tx: método name = "get*" propagation = "suporta" /> <tx: método name = "find*" propagation = "suporta" /> <tx: name "carregation*" propagação = "suporta" /> <tx: métod name = "carga*" propagação " propagation = "suporta" /> <tx: método name = "dataGrid*" propagation = "supports" /> <tx: método name = "*" propagation = "suporta" /> < /tx: atributes> < /tx: conselhos> <aop: config> <aop: pop: poput id = "transactpointpondCut" = "Expression> Expression> Expression*APOP: Point ID =" Transactpoint) com.yingjun.test.service ..*impl.*(..)) " /> <AOP: Advisor Pointcut-ref =" TransactionPointCut "aconselhamento-ref =" transactionAdvice " /> < /AOP: config> </ Beans>Para substituir o código manual de escrever objetos de acesso a dados (DAOS) usando o sqlsessionDaosupport ou sqlsessionTemplate, o mybatis-spring fornece uma implementação dinâmica de proxy: mapperFactoryBean. Esta classe permite que você injete diretamente a interface do mapeador de dados no seu feijão da camada de serviço. Ao usar o Mappers, basta chamá-los como você faz com o seu DAOS, mas não precisa escrever nenhum código de implementação do DAO, porque o mybatis-spring criará um proxy para você.
spring-mybatis.xml
<? xml versão = "1.0" Encoding = "utf-8"?> <! Doctype Configuration public "-// mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3-config.dtddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddtdy- figs! </figuration>
spring-mvc.xml
<? xml versão = "1.0" coding = "utf-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http:/wwww.w3 xmlns: p = "http://www.springframework.org/schema/p" xmlns: context = "http://www.springframework.org/schema/Context" xmlns: mvc = "http.org/schema/Context" xmlns: mvc = "http.org/schema/Context" xmlns: mvc = "http://schema/Context" Xmlns: xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> <!-Suporte de mapeamento de anotação padrão-> <MVC: Anotação-driven /> <!-Digitalize automaticamente o pacote, fazendo Springmvc pensar que a classe anotada por @Controller sob o pacote é o controlador-> <Contexto: Component-Scan-Package = "com.ingjun.test.controller" /> <! id = "mappingjacksonhttpmessageConverter"> <propriedade name = "supportedMediTypes"> <list> <Value> text/html; charset = utf-8 </value> </list> </oilter> </bean> <!-define o arquivo pré-sub-refinado, para o modo de salto, o modo de visão- Para a sequência de retorno do método da ação subsequente, para se tornar um endereço URL disponível-> <propriedade name = "prefixo" value = "/web-inf/jsp/"/> <nome da propriedade = "sufixo" value = ". Obviamente, se você não corresponder, não há necessidade de introduzir pacotes de componentes de upload no arquivo de configuração-> <bean id = "multipartResolver"> <!-codificação padrão-> <names name = "defaultEncoding" value = "utf-8" /> <!-máximo de tamanho do arquivo "8 de propriedade" 8 "MAXPLOTPLO) Valor máximo na memória -> <propriedade name = "maxinMemorySize" value = "40960"/> </shean> </sheans>
log4j.properties
jdbc.driverclassName = com.mysql.jdbc.driver jdbc.url = jdbc: mysql: //192.168.1.194: 3306/teste? useunicode = true & caracterencoding = utf-8 jdbc.USOLMOM = raiz? c3p0.pool.size.min = 5 c3p0.pool.size.ini = 3 c3p0.pool.size.increment = 2
jdbc.properties
log4j.rootlogger = info, console, depuração, aplicativo, erro ### console ### log4j.appender.console = org.apache.log4j.consoleappender log4j.appender.console.target = system.out log4j.apsend.console.layout = ourg.apache.Target = system.out log4j.appender.console.layout = ourg.apache.Target. log4j.appender.console.layout.conversionPattern = %d %p [ %c: %l]- %m %n ### Debug ### log4j.appender.debug = org.appache.log4j.dailyrollingFilEpPender log4j.appender.debug.file log4j.appender.debug.threshold = debug log4j.appender.debug.datepattern = '. %m %n ### app ### log4j.appender.app = org.apache.log4j.dailyrollingFileAppender log4j.appender.app.file = log/app.log log4j.append.append.append = true log4j.AppNenTinNyShold = info Log4j.appender.append.append.append = true log4j.AppNenTinN.YShold = Informatd. log4j.appender.app.layout = org.apache.log4j.patternlayout log4j.appender.app.layout.conversionPattern = %d %p [ %c: %l] - %m %n ### #### log4j.Apnder.error = org.apache.Log4J.Dail.Log4j.Dail.ilyring.Irpoll.erpoll. log/error.log log4j.appender.error.append = true log4j.appender.error.threshold = erro log4j.appender.error.datepattern = '. %p [%c:%l] -%m%n
5. Use o gerador Mybatis para criar automaticamente classes de entidade, mapeamento de arquivos e interfaces Dao
O Mybatis pertence a uma estrutura ORM semi-automática, portanto, seu principal trabalho é configurar arquivos de mapeamento de mapeamento. No entanto, como os arquivos de mapeamento manuscrito são propensos a erros, o gerador Mybatis pode ser usado para gerar automaticamente classes de entidade, interfaces DAO e arquivos de mapeamento de mapeamento. Isso economiza muito esforço e copia o código gerado no projeto.
Gere os arquivos e frascos necessários para o código e crie a seguinte estrutura de diretório:
Configure a conexão de banco de dados relevante em geradorl.xml, e a tabela de banco de dados já está disponível:
<? xml versão = "1.0" coding = "utf-8"?> <! Doctype geratorConfiguration public "-// mybatis.org//dtd mybatis generator configuration 1.0 //" Driver de banco de dados-> <ClassPathEntry Location = "MySQL-Connector-Java-5.1.34.jar" /> <contexto id = "db2tables" TargetRuntime = "mybatis3"> <CommentGenerator> <Nome da propriedade = suprime "Value =" True " /> <! value = "true"/> </commentGenerator> <!-Link do banco de dados URL, nome de usuário, senha-> <jdbcconnection driverclass = "com.mysql.jdbc.driver" genexturl = "jdbc: mysql: //192.168.1.194: 3306/n" NOC "/n" Ususert )r. <navatyperesolver> <propriedade name = "forcebigDecimals" value = "false" /> < /javatyperesolver> <!-gerar o nome do pacote e a localização do modelo-> <javamodelGenerator TargetPackage = "com.yingjun.test.model" TargetProject = "src" src "> name = "trimStrings" value = "true" /> < /javamodelGenerator> <!-Gere o nome do pacote e a localização do arquivo de mapeamento-> <sqlmapGenerator TargetPackage = "com.yingjun.test.mapping" TargetProject = "src"> <nome da propriedade = "enableSubPackages" TRUEQUGAGES ") name and location of the DAO--> <javaClientGenerator type="XMLMAPPER" targetPackage="com.yingjun.test.dao" targetProject="src"> <property name="enableSubPackages" value="true" /> </javaClientGenerator> <!-- The table to be generated is the table name in the database or the view name domainObjectName is the Nome da classe de entidade -> <tabela tablename = "outros_list" domainObjectName = "outroslist" EnableCountByExample = "fasle" enableUpDateByExample = "false" EnableteleteByExample = "False" EnableSelectByExample = "FalseByExampleeryId =" false "> </tabela" </tabela "
Abra a janela CMD e insira a estrutura do diretório e insira a linha de comando:
java -jar mybatis-generator-core-1.3.2.jar -configfile generator.xml -overwrite
Após a conclusão da execução, o mapeador e o modelo DAO correspondentes serão gerados. Não é muito bom?
6. Estabeleça a camada de serviço e a camada do controlador
pacote com.yingjun.test.service; interface pública OtherServicei {public String getOterList (); } pacote com.yingjun.test.service; importar java.util.arraylist; importar java.util.arrays; importar java.util.hashset; importar java.util.list; importar java.util.map; importar java.util.set; importar java.util.set; importar org.springframework.beans.factory.annotation.autowired; importar org.springframework.tereotype.service; importação com.alibaba.fastjson.json; Import com.alibaba.fastjson.serializer.SerializerFeature; import com.yingjun.test.dao.otherlistmapper; import com.yingjun.test.model.otherlist; importar com.ingjun.test.model.otherListDomain; @Service Public Class OtherServiceImpl implementa outros Servicei {@AUTOWIRED PRIVADO OUTRO LISTRAPPER OUTROLISTMAPPER; @Override public String string getOterList () {set <string> set = new HashSet <String> (); Lista <TherList> List = OtherListmapper.Selectall (); List <sOtherlistDomain> jsonList = new ArrayList <OtherListDomain> (); for (outra lista outra: list) {string title = outros.gettitle (); if (set.contains (title)) {continua; } else {list <therlist> t_list = new ArrayList <Otherlist> (); para (outros dados da lista: list) {if (title.equals (data.gettitle ())) {t_list.add (dados); }} OtherListDomain domain = new OtherListDomain (); domain.setTitle (título); domain.setItems (t_list); jsonList.add (domínio); set.add (other.getTitle ()); }} retorna json.tojSonstring (jsonList, serializerfeature.writeMapNullValue); }} pacote com.yingjun.test.controller; importar org.springframework.beans.factory.annotation.autowired; importar org.springframework.tereotype.controller; importar org.springframework.web.bind.annotation.requestmapping; importar org.springframework.web.bind.annotation.ResponseBody; importação com.alibaba.fastjson.json; importar com.yingjun.test.service.otherServicei; import com.yingjun.test.service.stockstatusservieCy; @Controller @RequestMapping (Value = "/") Public Class TSSCOntroller {@AUTOWIRED PRIVADO OUTERSERVICEI OtherService; @RequestMapping (value = "/getotherList", produz = "text/html; charset = utf-8") @Responsebody private string getotherList () {string json = outros serviços.getOterList (); retornar JSON; }} 7. Crie uma aula de teste
importar java.util.list; importar org.apache.log4j.logmanager; importar org.apache.log4j.logger; importar org.junit.test; importar org.junit.runner.runwith; importar org.springframework.beans.factory.annotation.autowired; importar org.springframework.test.context.ContextConfiguration; importar org.springframework.test.context.junit4.springjunit4classrunner; @Runwith (springjunit4classrunner.class) @ContextConfiguration (Localizações = {"ClassPath: spring.xml"}) classe pública testmybatis {@aUTowired Private OtherServicei Service; @Test public void test () {string list = service.getOterList (); logger.info (lista); }}8. Verifique através do navegador
http: // localhost: 8080/tzyjstateService/getotherList
Nesse ponto, o teste foi bem -sucedido e a integração das três principais estruturas do SSM foi concluída. Se você tiver outras necessidades, pode continuar a adicioná -las nessa base.
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.