찾다
Javajava지도 시간Java SpringBoot는 JSP와 MyBatis를 어떻게 통합합니까?

Spring Boot 스타터 시작하기

기존 Spring 프로젝트를 실행하려면 다양한 종속성을 가져와야 할 뿐만 아니라 다양한 XML 구성 파일을 구성해야 하는데 이는 매우 번거롭습니다. 그러나 Spring Boot 프로젝트가 생성된 후에는 별도의 작업 없이도 가능합니다. Spring Boot의 스타터 메커니즘 덕분에 어떠한 코드도 작성하지 않고 직접 실행할 수 있습니다.

Spring Boot는 일상적인 엔터프라이즈 애플리케이션 개발에서 다양한 시나리오를 추출하여 하나씩 스타터로 만듭니다. 여기에 사용할 수 있는 다양한 종속성을 통합합니다. 시나리오. 사용자는 Maven에 스타터 종속성을 도입하기만 하면 SpringBoot는 로드할 정보를 자동으로 스캔하고 해당 기본 구성을 시작할 수 있습니다. 스타터는 많은 양의 자동 구성을 제공하여 사용자가 다양한 종속성과 구성을 처리해야 하는 번거로움을 덜어줍니다. 이러한 모든 스타터는 기존 기본 구성을 따르며 사용자가 이러한 구성을 조정할 수 있습니다. 즉 "Convention is great than Configuration"

모든 스타터가 Spring Boot에서 공식적으로 제공되는 것은 아니며 일부 스타터도 있습니다. 이는 druid-spring-boot-starter 및 mybatis-spring-boot-starter 등과 같은 타사 기술 공급업체에서 제공됩니다. 물론 개별 타사 기술도 있습니다. Spring Boot는 공식적으로 스타터를 제공하지 않으며 타사 기술 공급업체도 스타터를 제공하지 않습니다. 예를 들어 spring-boot-starter-web은 거의 제공할 수 있습니다. 웹 개발 시나리오에 필요한 모든 종속성. 따라서 Spring Boot를 사용하여 웹 프로젝트를 개발할 때 웹 서버 및 기타 웹 종속성을 추가로 가져올 필요 없이 Starter만 도입하면 됩니다.

    <!--SpringBoot父项目依赖管理-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.13</version>
        <relativePath/>
    </parent>

    <dependencies>
        <!--导入 spring-boot-starter-web-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        ...
    </dependencies>
</project>

문제를 발견할 수 있습니다. 위 pom.xml 구성에서 spring-boot-starter-web 종속성을 도입할 때 해당 버전이 지정되지 않지만 종속성 트리에서는 모든 종속성이 버전 정보를 가지고 있음을 볼 수 있습니다. 그러면 이 버전 정보는 어디에 제어됩니까? ?

실제로 이러한 버전 정보는

spring-boot-starter-parent

(버전 중재 센터)에서 균일하게 관리됩니다.

spring-boot-starter-parent

spring-boot-starter-parent는 모든 Spring Boot 프로젝트의 상위 종속성입니다. Spring Boot의 버전 중재 센터라고 하며 프로젝트 내에서 몇 가지 공통 종속성을 처리할 수 있습니다. 통합 관리.

<!--SpringBoot父项目依赖管理-->
<parent>  
    <groupId>org.springframework.boot</groupId>   
    <artifactId>spring-boot-starter-parent</artifactId>    
    <version>2.4.5</version>    
</parent>

Spring Boot 프로젝트는 주로 다음 기능을 제공하는 spring-boot-starter-parent를 상속하여 합리적인 기본 구성을 얻을 수 있습니다.

    기본 JDK 버전(Java 8)
  • 기본 문자 집합(UTF- 8)
  • 종속성 관리 기능
  • 리소스 필터링
  • 기본 플러그인 구성
  • application.properties 및 application.yml 유형 구성 파일 식별
  • SpringBoot 기본 설정

1.1 스프링부트 포트 번호 설정

server:
  port: 8989 #配置端口

1.2 SpringBoot 프로젝트 이름 설정

server:
  servlet:
    context-path: /springboot   #配置项目的虚拟路径(根路径) 项目名使用/开头

1.3 SpringBoot 구성 파일 분할

spring:
  profiles:
    active: dev  #开发环境

Java SpringBoot는 JSP와 MyBatis를 어떻게 통합합니까?1.4 SpringBoot가 로그 열기

# 显示sql
logging:
  level:
    cn.kgc.springboot.mapper: debug  #开启日志

1.5 SpringBoot는 핫 배포를 구현합니다

웹 프로젝트 시작 과정에서 , 일반적으로 코드를 수정할 때마다 프로젝트를 다시 시작하고 재배포해야 합니다. 그러나 프로젝트가 점점 더 커지면서 각 시작에는 시간이 많이 걸리는 문제입니다. 따라서 핫 배포는 매우 혁신적인 기술입니다. 핫 배포를 사용하면 개발 효율성을 크게 향상시킬 수 있습니다

spring-boot-devtools는 핫 배포를 구현합니다

1. Maven 플러그인을 구성합니다.

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-devtools</artifactId>
</dependency>

3. application.yml 파일 구성

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <fork>true</fork> <!-- 如果devtools不生效  请设置该属性 -->
            </configuration>
        </plugin>
    </plugins>
</build>

4. 아이디어 설정 수정

File-Settings-Compiler 및 Build Project 자동 확인

5. 레지스트리 설정

ctrl + Shift + Alt + /, 레지스트리 선택, 앱 실행 시 컴파일러 autoMake 허용 확인

1.6 SpringBoot에서 페이징 쿼리 활성화

1. 종속성 소개:
devtools:
  restart:
    enabled: true #开启热部署

2 application.yml 파일 구성(구성하지 않고 기본값을 사용할 수 있음)

<dependency>
     <groupId>com.github.pagehelper</groupId>
     <artifactId>pagehelper-spring-boot-starter</artifactId>
     <version>1.2.12</version>
</dependency>

----------------------------------------------
 <dependency>
     <groupId>com.github.pagehelper</groupId>
     <artifactId>pagehelper-spring-boot-starter</artifactId>
     <version>1.2.10</version>
</dependency>

3. 테스트용 컨트롤러, 비즈니스 레이어, 지속성 레이어 작성

# pageHelper分页配置
pagehelper:
  helper-dialect: mysql  #数据库类型
  reasonable: true   #分页合理化 page<1 查询第一页 page >pageNumber 查询最后一页
  support-methods-arguments: true  # 支持mapper接口传递参数开启分页
  params: count=countSql  #用于从对象中根据属性名取值

springBoot 객체 관리

객체 관리
  • Spring에서 객체를 관리하는 방법:

    1. 파일 관리에서 Bean 태그 설정을 사용하십시오.

    @Override
    public PageInfo<User> getPage(int pageNum, int pageSize) {
    
        PageHelper.startPage(pageNum, pageSize);
    
        List<User> userList = userMapper.selectList();
    
        PageInfo<User> pageInfo = new PageInfo<>(userList);
    
        return pageInfo;
    }

    2. @Component @Controller @Service @Repository

springboot가 객체를 관리하는 방법:

1 구성 방법을 사용하여 객체를 생성합니다. springboot는 @Configuration 주석 추가 사용을 지원합니다. 구성 클래스에서 이 클래스는 구성 클래스로서 스프링 구성 파일과 동일합니다. 이 주석은 클래스에서만 사용할 수 있습니다. 스프링 구성 파일

<bean id="" class="xxx.xxx.xxx"></bean>

2의 bean 태그와 동일한 구성 클래스의 메서드에

@Bean

주석을 사용합니다. 원래 스프링 주석 @Component @Controller @Service @Repository

을 사용합니다.

속성 주입

    스프링 오리지널 주입 방식
  • 1.set 방식2.constructor

    3.자동 주입

name: tom
age: 30
price: 23.5
sex: true
birth: 2021/11/28 12:12:12
array: 12,13,15,17
list: 李四,lisi,tom
map: "{&#39;aa&#39;:30,&#39;bb&#39;:&#39;lisi&#39;}" # 注入map使用json格式  取值的个数#{${map}}

对象的注入

object:
  name: lisi
  age: 20
  birth: 2021/11/24
@Controller
@RequestMapping("/inject2")
@ConfigurationProperties("object")
public class InjectController2 {

    private String name;
    private Integer age;
    private Date birth;

   	public void setName(String name) {
        this.name = name;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    public void setBirth(Date birth) {
        this.birth = birth;
    }
    @RequestMapping("/inject")
    @ResponseBody
    public String inject(){
        System.out.println(name);
        System.out.println(age);
        System.out.println(birth);
        return  "ok";
    }
}

注意:添加一下依赖,可以再写yaml文件时提示,消除红色的警告提示。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

springBoot整合JSP

引入依赖

<!--        标准标签库-->
<dependency>
    <groupId>jstl</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>
<!--        让springboot内置的tomcat具有解析jsp的能力-->
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
</dependency>

配置视图解析器

spring:
  mvc:
    view:
      prefix: /
      suffix: .jsp

设置不重启项目 刷新jsp页面

server:
  servlet:
    jsp:
      init-parameters:
        development: true  # 修改jsp页面无需重新启动项目

集成后无法访问jsp页面解决方案

1.添加插件

<build>
    <resources>
        <!--注册webapp目录为资源目录-->
        <resource>
            <directory>src/main/webapp</directory>
            <targetPath>META-INF/resources</targetPath>
            <includes>
                <include>**/*.*</include>
            </includes>
        </resource>
    </resources>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

2.设置工作目录

Java SpringBoot는 JSP와 MyBatis를 어떻게 통합합니까?

3.插件启动

Java SpringBoot는 JSP와 MyBatis를 어떻게 통합합니까?

SpringBoot整合MyBatis

引入依赖

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.47</version>
</dependency>
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.3</version>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.12</version>
</dependency>

编写配置文件

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    username: root
    password: root
    url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&characterEncoding=utf-8

mybatis配置

mybatis:
  mapper-locations: classpath:mapper/*.xml  #设置mapper文件的位置
  type-aliases-package: cn.kgc.springboot.entity # 起别名
  configuration:
    map-underscore-to-camel-case: true #开启驼峰命名

设置dao接口的扫描

1.在入口类上使用注解,完成扫描

@SpringBootApplication
@MapperScan("cn.kgc.springboot.dao") //扫描dao接口所在的包 同时生成代理对象 注入spring容器
public class Springday02Application {
    public static void main(String[] args) {
        SpringApplication.run(Springday02Application.class, args);
    }
}

위 내용은 Java SpringBoot는 JSP와 MyBatis를 어떻게 통합합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 亿速云에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
JVM은 운영 체제 API의 차이를 어떻게 처리합니까?JVM은 운영 체제 API의 차이를 어떻게 처리합니까?Apr 27, 2025 am 12:18 AM

JVM은 JNI (JavanativeInterface) 및 Java 표준 라이브러리를 통한 운영 체제 API 차이를 처리합니다. 1. JNI는 Java 코드가 로컬 코드를 호출하고 운영 체제 API와 직접 상호 작용할 수 있습니다. 2. Java Standard Library는 통합 API를 제공하며,이 API는 내부적으로 다른 운영 체제 API에 매핑되어 코드가 플랫폼에서 실행되도록합니다.

Java 9에 도입 된 모듈성은 플랫폼 독립성에 어떤 영향을 미칩니 까?Java 9에 도입 된 모듈성은 플랫폼 독립성에 어떤 영향을 미칩니 까?Apr 27, 2025 am 12:15 AM

modularityDoesNotDirectHeftJava'splatformincendence.java'splatformincendenceIngeasted whejvm, butModularItyInfluencesApplicationStructureAndmanagement, deploymentandDuffictionBecomeMoreferficaliticiboliticalWI

바이트 코드 란 무엇이며 Java의 플랫폼 독립성과 어떤 관련이 있습니까?바이트 코드 란 무엇이며 Java의 플랫폼 독립성과 어떤 관련이 있습니까?Apr 27, 2025 am 12:06 AM

bytecodeinjavaistheintermediaterepresentation attenablesplatformincendence.1) javacodeiscompiledintobytecodestoredin.2) thejvminterpretsorcompilesthisbytecodeintomachinecodeartruntime, theCodeTorUnanynanynovice를 허용합니다

Java가 플랫폼 독립 언어로 간주되는 이유는 무엇입니까?Java가 플랫폼 독립 언어로 간주되는 이유는 무엇입니까?Apr 27, 2025 am 12:03 AM

javaachievesplatformincendenceThoughthegroughthejavavirtualMachine (JVM), theexecutesByTecodeonAnyDeviceWitHajvm.1) javacodeiscompiledintobytecode.2) thejvm-mmectretsandexecutesThisteCodeIntomachineCificinStructions, 허용

그래픽 사용자 인터페이스 (GUI)는 Java의 플랫폼 독립성에 대한 과제를 어떻게 제시 할 수 있습니까?그래픽 사용자 인터페이스 (GUI)는 Java의 플랫폼 독립성에 대한 과제를 어떻게 제시 할 수 있습니까?Apr 27, 2025 am 12:02 AM

Javagui 개발의 플랫폼 독립성은 과제에 직면하지만 Swing, Javafx, Unifying Locance, Performance Optimization, 타사 라이브러리 및 크로스 플랫폼 테스트를 사용하여 처리 할 수 ​​있습니다. Javagui Development는 교차 플랫폼 일관성을 제공하는 것을 목표로하는 AWT 및 Swing에 의존하지만 실제 효과는 운영 체제마다 다릅니다. 솔루션은 다음과 같습니다. 1) Swing 및 Javafx 사용 GUI 툴킷으로 사용; 2) UIMANAGER.SETLOOKANDFEEL ()을 통해 외관을 통합합니다. 3) 다른 플랫폼에 맞게 성능을 최적화합니다. 4) apachepivot 또는 SWT와 같은 타사 라이브러리 사용; 5) 일관성을 보장하기 위해 크로스 플랫폼 테스트를 수행하십시오.

Java 개발의 어떤 측면이 플랫폼 의존적입니까?Java 개발의 어떤 측면이 플랫폼 의존적입니까?Apr 26, 2025 am 12:19 AM

javadevelopmentisnotentirelyplatform-IndectionentDuetoSeveralFactors.1) JVMVARIATIONSAFFERFFERFORMANDBEHAVIORACROSSDIFFERENTOS.2) nativelibrariesViajniintrictionPlatform-specificiss.3) filepathsandsystempropertiesdifferbetweenplatectry. 4)

다른 플랫폼에서 Java 코드를 실행할 때 성능 차이가 있습니까? 왜?다른 플랫폼에서 Java 코드를 실행할 때 성능 차이가 있습니까? 왜?Apr 26, 2025 am 12:15 AM

Java 코드는 다른 플랫폼에서 실행할 때 성능 차이가 있습니다. 1) JVM의 구현 및 최적화 전략은 OracleJDK 및 OpenJDK와 같이 다릅니다. 2) 메모리 관리 및 스레드 스케줄링과 같은 운영 체제의 특성도 성능에 영향을 미칩니다. 3) 적절한 JVM을 선택하여 JVM 매개 변수 및 코드 최적화를 조정하여 성능을 향상시킬 수 있습니다.

Java의 플랫폼 독립성의 몇 가지 한계는 무엇입니까?Java의 플랫폼 독립성의 몇 가지 한계는 무엇입니까?Apr 26, 2025 am 12:10 AM

Java'SplatformIndenceHASLIMITATIONSINTERFORMANTOWORHEAD, 버전 컴포팅 가능성, 도전 과제, 플랫폼-특이 적 식품, 및 JVMINSTALLATION/MAYMENDENT.ThesefacteThe "WriteOnce, Runanywhere"

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.