当前位置: 首页 > wzjs >正文

国外手机网站欣赏建设网站的企业是什么

国外手机网站欣赏,建设网站的企业是什么,a站全名叫什么,网页设计与制作黑马程序员电子版前言 Spring Boot作为当今Java生态中最受欢迎的框架之一,极大地简化了Spring应用的初始搭建和开发过程。本文将深入探讨Spring Boot的三个核心特性:自动配置原理、Starter依赖机制以及如何高效集成MyBatis Plus。无论你是Spring Boot新手还是有一定经验…

前言

Spring Boot作为当今Java生态中最受欢迎的框架之一,极大地简化了Spring应用的初始搭建和开发过程。本文将深入探讨Spring Boot的三个核心特性:自动配置原理、Starter依赖机制以及如何高效集成MyBatis Plus。无论你是Spring Boot新手还是有一定经验的开发者,相信本文都能为你带来新的收获。

一、Spring Boot自动配置原理深度解析

1.1 自动配置的核心机制

Spring Boot的自动配置是其"约定优于配置"理念的核心体现。它通过以下机制实现:

  1. @EnableAutoConfiguration注解:这是自动配置的入口,通过@Import导入AutoConfigurationImportSelector

  2. spring.factories文件:位于META-INF目录下,定义了所有自动配置类

  3. 条件化配置:通过@Conditional系列注解实现按需加载

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import(AutoConfigurationImportSelector.class)
public @interface EnableAutoConfiguration {// ...
}

1.2 自动配置的工作流程

  1. Spring Boot启动时扫描所有jar包中的META-INF/spring.factories

  2. 加载org.springframework.boot.autoconfigure.EnableAutoConfiguration指定的配置类

  3. 根据条件注解(如@ConditionalOnClass等)过滤有效的配置类

  4. 将符合条件的@Configuration类加载到IoC容器

1.3 常见条件注解解析

注解说明
@ConditionalOnClass类路径下存在指定类时生效
@ConditionalOnMissingBean容器中不存在指定Bean时生效
@ConditionalOnProperty指定的属性有特定值时生效
@ConditionalOnWebApplication是Web应用时生效

1.4 自定义自动配置示例

下面是一个简单的自定义自动配置示例:

@Configuration
@ConditionalOnClass(MyService.class)
@EnableConfigurationProperties(MyServiceProperties.class)
public class MyAutoConfiguration {@Bean@ConditionalOnMissingBeanpublic MyService myService(MyServiceProperties properties) {return new MyService(properties);}
}

对应的属性类:

@ConfigurationProperties("my.service")
public class MyServiceProperties {private String prefix;private String suffix;// getters and setters
}

二、Starter依赖:Spring Boot的模块化魔法

2.1 Starter依赖的本质

Starter依赖本质上是一个特殊的Maven/Gradle依赖,它聚合了特定功能所需的所有相关依赖。其核心特点包括:

  1. 依赖传递:自动引入功能相关的所有必要库

  2. 自动配置:通常包含自动配置类

  3. 默认配置:提供合理的默认配置值

2.2 官方Starter vs 第三方Starter

官方Starter(命名规范:spring-boot-starter-*):

  • spring-boot-starter-web

  • spring-boot-starter-data-jpa

  • spring-boot-starter-test

第三方Starter(命名规范:*-spring-boot-starter):

  • mybatis-spring-boot-starter

  • druid-spring-boot-starter

  • elasticsearch-spring-boot-starter

2.3 自定义Starter开发指南

2.3.1 项目结构
my-spring-boot-starter
├── src/main/java
│   └── com/example/autoconfigure
│       ├── MyAutoConfiguration.java
│       └── MyServiceProperties.java
├── src/main/resources
│   └── META-INF
│       ├── spring.factories
│       └── additional-spring-configuration-metadata.json
└── pom.xml
2.3.2 关键文件配置

spring.factories:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.example.autoconfigure.MyAutoConfiguration

pom.xml关键配置:

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

2.4 Starter最佳实践

  1. 合理的默认值:提供大多数场景适用的默认配置

  2. 清晰的配置元数据:通过spring-configuration-metadata.json提供配置提示

  3. 灵活的可扩展性:允许用户通过@Bean覆盖默认实现

  4. 完善的文档:说明必要的配置项和使用示例

三、Spring Boot集成MyBatis Plus实战

3.1 MyBatis Plus简介

MyBatis Plus是MyBatis的增强工具,在MyBatis基础上只做增强不做改变,提供了:

  • 通用CRUD:内置通用Mapper、通用Service

  • 条件构造器:通过Wrapper实现复杂查询

  • 分页插件:支持多种数据库的分页查询

  • 代码生成器:快速生成Entity、Mapper等代码

3.2 集成步骤详解

3.2.1 添加依赖
<dependencies><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>最新版本</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency>
</dependencies>
3.2.2 基础配置

application.yml:

spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/mybatis_plus?useSSL=false&serverTimezone=UTCusername: rootpassword: 123456mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 打印SQL日志global-config:db-config:id-type: auto # 主键自增logic-delete-field: deleted # 逻辑删除字段logic-delete-value: 1 # 逻辑已删除值logic-not-delete-value: 0 # 逻辑未删除值
3.2.3 实体类与Mapper

实体类:

@Data
@TableName("user")
public class User {@TableId(type = IdType.AUTO)private Long id;private String name;private Integer age;private String email;@TableLogicprivate Integer deleted;
}

Mapper接口:

public interface UserMapper extends BaseMapper<User> {// 可以自定义方法@Select("SELECT * FROM user WHERE age > #{age}")List<User> selectUsersOlderThan(Integer age);
}
3.2.4 启用Mapper扫描
@SpringBootApplication
@MapperScan("com.example.mapper")
public class MyApplication {public static void main(String[] args) {SpringApplication.run(MyApplication.class, args);}
}

3.3 MyBatis Plus高级特性应用

3.3.1 条件构造器
// 查询名字包含"张",年龄小于30的用户
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.like("name", "张").lt("age", 30);
List<User> users = userMapper.selectList(wrapper);
3.3.2 分页查询

首先配置分页插件:

@Configuration
public class MybatisPlusConfig {@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));return interceptor;}
}

使用分页查询:

Page<User> page = new Page<>(1, 10); // 第一页,每页10条
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.ge("age", 20);
IPage<User> userPage = userMapper.selectPage(page, wrapper);
3.3.3 逻辑删除

配置逻辑删除后,删除操作将自动变为更新操作:

userMapper.deleteById(1L); 
// 实际执行: UPDATE user SET deleted=1 WHERE id=1 AND deleted=0

查询时会自动过滤已删除数据:

userMapper.selectList(null); 
// 实际执行: SELECT * FROM user WHERE deleted=0

3.4 性能优化建议

  1. 批量操作:使用saveBatchupdateBatchById等方法

  2. SQL打印控制:生产环境关闭SQL日志

  3. 二级缓存:合理使用MyBatis二级缓存

  4. 动态表名:使用TableNameHandler处理分表场景

  5. SQL注入器:自定义通用方法

四、常见问题与解决方案

4.1 自动配置相关问题

问题1:如何覆盖自动配置的Bean?

解决方案

@Bean
@Primary // 如果有多个同类型Bean,优先使用这个
public DataSource dataSource() {// 自定义DataSource配置
}

问题2:如何排除特定的自动配置?

解决方案

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class MyApplication {// ...
}

4.2 Starter依赖相关问题

问题:Starter依赖冲突如何解决?

解决方案

  1. 使用mvn dependency:tree查看依赖树

  2. 通过<exclusions>排除冲突依赖

  3. 使用@AutoConfigureBefore@AutoConfigureAfter调整自动配置顺序

4.3 MyBatis Plus集成问题

问题1:如何实现多数据源?

解决方案

使用@DS注解(需要添加dynamic-datasource-spring-boot-starter依赖)

@Service
@DS("slave") // 指定数据源
public class UserServiceImpl implements UserService {// ...
}

问题2:如何自定义TypeHandler?

解决方案

@MappedTypes(Enum.class)
@MappedJdbcTypes(JdbcType.VARCHAR)
public class MyTypeHandler extends BaseTypeHandler<MyEnum> {// 实现方法
}

五、总结与最佳实践

5.1 Spring Boot最佳实践

  1. 合理使用Profile:区分dev、test、prod环境

  2. 外部化配置:将配置放在application.yml或环境变量中

  3. 健康检查:合理使用Actuator端点

  4. 版本管理:使用Spring Boot Dependency Management管理依赖版本

5.2 MyBatis Plus最佳实践

  1. 避免过度使用Wrapper:复杂SQL建议使用XML或注解方式

  2. 合理使用代码生成器:减少重复工作

  3. 性能监控:集成p6spy监控真实SQL

  4. 多模块管理:大型项目按模块管理Mapper

通过本文的学习,相信你已经对Spring Boot的自动配置原理、Starter依赖机制以及MyBatis Plus集成有了深入的理解。在实际项目中,灵活运用这些知识,可以大幅提高开发效率和应用质量。如果有任何问题,欢迎在评论区留言讨论!


文章转载自:

http://w8Wvg3wH.wqwbj.cn
http://KjUUcRqk.wqwbj.cn
http://GQjyfNpl.wqwbj.cn
http://EiAbssMf.wqwbj.cn
http://Oz2Q6GB6.wqwbj.cn
http://8IMB3RQX.wqwbj.cn
http://S1TeJPc7.wqwbj.cn
http://gyCNSfj7.wqwbj.cn
http://dxUGyvTt.wqwbj.cn
http://gVLHlCsx.wqwbj.cn
http://DQgHPbWu.wqwbj.cn
http://CtWOH3pa.wqwbj.cn
http://1PwdvVOE.wqwbj.cn
http://JolSMJHJ.wqwbj.cn
http://lbMv6ser.wqwbj.cn
http://vQSLEY3s.wqwbj.cn
http://fvqDcAlb.wqwbj.cn
http://Km5WltvM.wqwbj.cn
http://0JLfp17v.wqwbj.cn
http://unfqlFdv.wqwbj.cn
http://f1DvPWjT.wqwbj.cn
http://q5jMTsVu.wqwbj.cn
http://Qqos5BcY.wqwbj.cn
http://08RcrYBx.wqwbj.cn
http://xSeC64mo.wqwbj.cn
http://WGUWr4q1.wqwbj.cn
http://MVnFO9c6.wqwbj.cn
http://6KcuCl82.wqwbj.cn
http://oa5WRQrX.wqwbj.cn
http://wkqvKwol.wqwbj.cn
http://www.dtcms.com/wzjs/663940.html

相关文章:

  • 买域名送网站东莞公司注册哪家好
  • 宝安区做外贸网站的公司wordpress改了常规无法访问
  • 高端网站建设教学山东工艺美术学院网站建设公司
  • 建设网站 软件做ppt的网站兼职
  • 可信赖的扬中网站建设室内设计有限公司
  • 如何查询网站备案进度学做网站网
  • 厦门同安网站制作企业如何做app网站
  • 门户网站代做wordpress 查询 插件
  • php网站开发示例百度竞价排名查询
  • 浙江网络安全学院官网站长工具seo综合查询推广
  • 网站制作有限长治网站建设
  • 网站建设信息推荐网页设计师培训费用图
  • 龙岗 营销型网站建设高德地图怎么没有菲律宾位置
  • 网站服务器有哪几种华为手机价格大全
  • 朋友找做网站都要收定金上海企业网站开发
  • 建网站的平台最好看的2018中文在线观看
  • 网站建设玖金手指花总nginx 搭建wordpress
  • 网站做外链好不好在线制作图片及图片处理工具免费
  • 网站建设 岗位职责 智联辽宁建设工程网
  • 创建集团上海公司网站住房城乡建设门户网站
  • 网站建设使用的基本技术网站开发验收报告模板
  • 网站生成手机页面报价网站系统
  • 建购物的网站需要多少钱珠海新盈科技有限公 网站建设
  • 网站建设内链网络营销策略内容
  • 高校门户网站系统网站右侧浮动广告
  • 南昌做网站费用企业网站设计与规划论文
  • 做3d图的网站有哪些软件seo搜索引擎优化方案怎么写
  • 廊坊网站建设多少钱深圳做网站报价
  • 怎样可以提升自己的网站wordpress 上传安装不了
  • 个人网站推广方案wordpress官方中文版