<java> 多例模式

多例设计模式----一个类的对象数量是有限个----枚举

要求描述一周数的类,只能有七个对象;描述性别的类,只能有两个。
这些都属于多例设计模式。
所谓的多例只是比单例追加了更多个内部实例化对象产生而已。

范例:定义一个表示性别的多例类

class Sex {
    private String title ;
    public static final int MALE_FLAG = 1 ;
    public static final int FEMALE_FLAG = 2 ;
    private static final Sex MALE = new Sex("男") ;
    private static final Sex FEMALE = new Sex("女") ;
    private Sex(String title) {
        this.title = title ;
    }
    public static Sex getInstance(int flag) {
        switch (flag) {
        case MALE_FLAG:
            return MALE ;
        case FEMALE_FLAG:
            return FEMALE ;
        default:
            return null ;
        }
    }
@Override
    public String toString() {
       return this.title ;
    }
}
public class MultitonTest {
    public static void main(String[] args) {
        Sex male = Sex.getInstance(Sex.MALE_FLAG) ;
        System.out.println(male);
    }
}

不管多例还是单例都有共同特点:

  1. 构造方法私有化。
  2. 类内部一定会提供一个static方法用于取得实例化对象。
<?xml version="1.0" encoding="UTF-8"?> <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.4.0</version> </parent> <groupId>com.drh</groupId> <artifactId>back1</artifactId> <version>1.0.0</version> <name>back</name> <properties> <java.version>17</java.version> </properties> <dependencies> <!-- Knife4j (排除旧版 SpringDoc UI) --> <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId> <version>4.4.0</version> <exclusions> <exclusion> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-ui</artifactId> </exclusion> </exclusions> </dependency> <!-- pom.xml 中强制指定版本 --> <dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId> <version>2.5.0</version> <!-- 修复 ControllerAdviceBean 兼容性问题 --> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-spring-boot3-starter</artifactId> <version>3.5.7</version> </dependency> <dependency> <groupId>com.ba
最新发布
03-28
<think>好的,我现在需要帮助用户配置一个Maven项目,包含Spring Boot 3.4.0、Knife4j OpenAPI3 Jakarta Starter和MyBatis Plus。首先,我得确保依赖的版本兼容性。因为Spring Boot 3.x需要Java 17以上,所以用户的环境是否符合?但用户的问题集中在Maven配置,可能已经准备好环境了。 接下来,Spring Boot 3.4.0的父POM是必要的,作为项目的基础。然后,Knife4j的依赖需要注意,Spring Boot 3之后Jakarta EE 9+,所以必须使用对应的starter,比如`knife4j-openapi3-jakarta-spring-boot-starter`,并且版本要兼容。根据引用[1],可能需要查看Knife4j的文档,但用户提供的引用中提到的博客可能已经说明如何使用,所以版本号可能需要选最新的,比如4.3.0。 MyBatis Plus方面,Spring Boot 3的支持版本应该是3.5.3.x以上,例如3.5.3.1,因为之前的版本可能不兼容。需要确认MyBatis Plus官方文档中的兼容性列表,确保和Spring Boot 3.4.0匹配。 然后,配置Knife4j需要创建一个OpenAPI的配置类,使用`@Configuration`和`OpenAPI`对象,设置基本信息。可能还需要在application.yml中启用Knife4j的相关配置,比如是否开启增强模式。 MyBatis Plus的配置则需要数据源,比如在application.yml中配置数据库连接信息,以及添加MyBatis Plus的插件,比如分页插件。同时,Mapper接口需要被扫描,使用`@MapperScan`注解。 可能的问题包括依赖冲突,特别是Knife4j和Spring Boot 3的starter是否正确,Jakarta包名是否正确(比如javax换成jakarta)。还有MyBatis Plus的版本是否适配Spring Boot 3.4.0,需要检查官方文档是否有明确的版本对应。 最后,测试是否成功,可以通过启动应用,访问Knife4j的接口文档页面,以及测试MyBatis Plus的数据库操作是否正常。</think>以下是在Maven项目中集成Spring Boot 3.4.0、Knife4j OpenAPI3和MyBatis Plus的完整配置指南: ### 一、Maven父级依赖配置 ```xml <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.4.0</version> <relativePath/> </parent> <dependencies> <!-- Spring Boot Web基础支持 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- Knife4j OpenAPI3 Jakarta版本 --> <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId> <version>4.3.0</version> <!-- 注意版本兼容性 --> </dependency> <!-- MyBatis Plus Spring Boot Starter --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.3.1</version> <!-- 支持Spring Boot 3.x的最新版本 --> </dependency> <!-- 数据库驱动示例(以MySQL为例) --> <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <scope>runtime</scope> </dependency> </dependencies> ``` ### 二、OpenAPI配置类 ```java @Configuration public class OpenApiConfig { @Bean public OpenAPI springShopOpenAPI() { return new OpenAPI() .info(new Info().title("API文档") .description("Spring Boot 3.4集成示例") .version("v1.0")) .externalDocs(new ExternalDocumentation() .description("Knife4j文档") .url("https://doc.xiaominfo.com")); } } ``` ### 三、MyBatis Plus配置 ```yaml # application.yml mybatis-plus: configuration: map-underscore-to-camel-case: true # 自动驼峰转换 global-config: db-config: logic-delete-field: deleted # 逻辑删除字段 logic-delete-value: 1 logic-not-delete-value: 0 spring: datasource: url: jdbc:mysql://localhost:3306/dbname?useSSL=false username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver ``` ### 四、启动类配置 ```java @SpringBootApplication @MapperScan("com.example.mapper") // 指定Mapper接口扫描路径 public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` ### 五、验证配置 1. 启动应用后访问:`http://localhost:8080/doc.html` 2. 检查MyBatis Plus日志输出SQL语句 3. 验证数据库连接是否正常 ### 常见问题解决 1. **Jakarta包冲突**:确保所有依赖使用Jakarta EE 9+规范(如javax -> jakarta命名空间)[^1] 2. **版本兼容性**:MyBatis Plus 3.5.3.x+版本支持Spring Boot 3.x[^2] 3. **Knife4j文档不显示**:检查是否启用增强模式(默认已启用)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值