springboot整合其他技术集结

    技术2025-04-29  22

    一、SpringBoot整合springmvc

    springboot默认配置已经可以使用SpringMVC了,不过有时候需要进行自定义配置。

    修改端口

    查看SpringBoot的全局属性可知,端口通过以下方式配置:

    # 映射端口 server.port= 6666

    访问静态资源

    源码查看ResourceProperties自动配置类,默认的静态资源路径为:

    classpath:/META-INF/resources/classpath:/resources/classpath:/static/classpath:/public

    只要静态资源放在这些目录中任何一个,SpringMVC都会帮我们处理。

    添加拦截器

    定义一个拦截器:实现HandlerInterceptor或继承HandlerInterceptorAdapter。建议使用HandlerInterceptorAdapter,因为可以按需进行方法的覆盖。

    public class LoginInterceptor implements HandlerInterceptor { private Logger logger = LoggerFactory.getLogger(LoginInterceptor.class); @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { logger.debug("preHandle method is now running!"); return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) { logger.debug("postHandle method is now running!"); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { logger.debug("afterCompletion method is now running!"); } }

    定义配置类,注册拦截器:

    @Configuration public class MvcConfig implements WebMvcConfigurer{ /** * 通过@Bean注解,将我们定义的拦截器注册到Spring容器 * @return */ @Bean public LoginInterceptor loginInterceptor(){ return new LoginInterceptor(); } /** * 重写接口中的addInterceptors方法,添加自定义拦截器 * @param registry */ @Override public void addInterceptors(InterceptorRegistry registry) { // 通过registry来注册拦截器,通过addPathPatterns来添加拦截路径 registry.addInterceptor(this.loginInterceptor()).addPathPatterns("/**"); } }

    二、SpringBoot整合数据库相关技术

    创建user表

    在test数据库中创建user表

    -- ---------------------------- -- Table structure for `user` -- ---------------------------- DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(50) DEFAULT NULL, `password` varchar(50) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of user -- ---------------------------- INSERT INTO `user` VALUES ('1', 'zhangsan', '123'); INSERT INTO `user` VALUES ('2', 'lisi', '123');
    添加数据库连接信息

    在application.properties配置

    #数据库: spring.datasource.driverClassName=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8 spring.datasource.username=root spring.datasource.password=root
    添加数据库驱动
    <!-- MySQL连接驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>

    SpringBoot整合Mybatis

    添加Mybatis的起步依赖
    <!--mybatis起步依赖--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.1.1</version> </dependency>
    添加数据库连接信息

    在application.properties配置

    #spring集成Mybatis环境 #pojo别名扫描包 mybatis.type-aliases-package=com.ao.domain #加载Mybatis映射文件 mybatis.mapper-locations=classpath:mapper/*Mapper.xml
    编写实体
    public class User { // 主键 private Long id; // 用户名 private String username; // 密码 private String password; //此处省略getter和setter方法 .. .. }
    编写Mapper
    @Mapper public interface UserMapper { public List<User> queryUserList(); }

    注意:@Mapper标记该类是一个mybatis的mapper接口,可以被spring boot自动扫描到spring上下文中

    配置Mapper映射文件

    在src\main\resources\mapper路径下加入UserMapper.xml配置文件"

    <?xml version="1.0" encoding="utf-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace="com.ao.mapper.UserMapper"> <select id="queryUserList" resultType="user"> select * from user </select> </mapper>

    测试略


    SpringBoot整合Spring Data JPA

    添加Spring Data JPA的起步依赖
    <!-- springBoot JPA的起步依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency>
    application.properties中配置jpa的相关属性
    #JPA相关配置: spring.jpa.database=MySQL spring.jpa.show-sql=true spring.jpa.generate-ddl=true spring.jpa.hibernate.ddl-auto=update spring.jpa.hibernate.naming_strategy=org.hibernate.cfg.ImprovedNamingStrategy
    编写实体
    @Entity public class User { // 主键 @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; // 用户名 private String username; // 密码 private String password; //此处省略setter和getter方法... ... }
    编写UserRepository
    public interface UserRepository extends JpaRepository<User,Long>{ public List<User> findAll(); }

    测试略


    SpringBoot整合通用mapper

    添加依赖
    <!-- 通用mapper --> <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper-spring-boot-starter</artifactId> <version>2.0.2</version> </dependency>
    编写实体
    @TableName("t_user") public class User { @Id @KeySql(useGeneratedKeys = true) private Long id; private String username; private String password; //此处省略getter和setter方法 .. .. }
    编写Mapper

    不需要做任何配置就可以使用了,注意记得在mapper接口添加@Mapper注解

    @Mapper public interface UserMapper extends Mapper<User>{ }

    测试略


    SpringBoot整合mybatis-plus

    引入依赖
    <!--mybatis-plus依赖包--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.3.0</version> </dependency>
    application.properties中配置相关属性
    #mybatis-plus 相关 mybatis-plus: # 支持枚举类型 typeEnumsPackage: com.ao.dto.enums global-config: sql-parser-cache: true db-config: logic-delete-field: deleted #全局逻辑删除字段值 3.3.0开始支持,详情看下面。 logic-delete-value: 1 # 逻辑已删除值(默认为 1) logic-not-delete-value: 0 # 逻辑未删除值(默认为 0) configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 打印SQL
    编写实体

    可在官方下载代码生成器

    @TableName("t_user") public class User { @TableField("id") private Long id; @TableField("username") private String username; @TableField("password") private String password; //此处省略getter和setter方法 .. .. }
    service接口
    public interface IUserService extends IService<User> { }
    service实现类
    @Service public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService { }
    编写Mapper
    @Mapper public interface UserMapper extends BaseMapper<User> { }
    编写Mapper.xml
    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.ao.demo.mapper.UserMapper"> </mapper>

    测试略

    三、SpringBoot整合Junit

    引入依赖

    <!--测试的起步依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency>

    编写测试类

    @RunWith(SpringRunner.class) @SpringBootTest(classes = TestSpringBootApplication.class) public class MapperTest { @Autowired private UserMapper userMapper; @Test public void test() { List<User> users = userMapper.queryUserList(); System.out.println(users); } }

    SpringRunner继承自SpringJUnit4ClassRunner,使用哪一个Spring提供的测试测试引擎都可以

    public final class SpringRunner extends SpringJUnit4ClassRunner

    @SpringBootTest的属性指定的是引导类的字节码对象

    四、SpringBoot整合Redis

    添加redis的起步依赖
    <!-- 配置使用redis启动器 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
    配置redis的连接信息
    #redis 相关 redis: host: 127.0.0.1 port: 6379 password: 123456 database: 2 #默认就是0 #redis jedis 相关 jedis: pool: # 连接池最大连接数(使用负值表示没有限制) max-active: 100 # 连接池最大阻塞等待时间(使用负值表示没有限制) max-wait: -1 # 连接池中的最大空闲连接 max-idle: 8 # 连接池中的最小空闲连接 min-idle: 0
    redis服务层
    @Component public class RedisService{ @Autowired private RedisTemplate<String, String> stringRedisTemplate; /** * 设置key并设置过期时间 * @param key * @param value * @param time 单位为秒 * @return */ public boolean set(String key,String value,Long time) { try { stringRedisTemplate.opsForValue().set(key,value,time,TimeUnit.SECONDS); return true; } catch (Exception e) { e.printStackTrace(); } return false; } /** * 获取 */ public String get(String key) { try { return stringRedisTemplate.opsForValue().get(key); } catch (Exception e) { e.printStackTrace(); } return null; } .........

    测试略

    五、SpringBoot整合dubbo

    搭建提供方

    引入依赖
    <dependency> <groupId>com.alibaba.boot</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>0.2.0</version> </dependency>
    配置文件
    dubbo: monitor: # 连接监控中心 在注册中心中自动发现 protocol: registry protocol: # 指定通信规则(通信协议/通信端口) name: dubbo port: 20885 registry: # 2、指定注册中心的位置 protocol: zookeeper address: 127.0.0.1:2181 application: # 指定当前服务/应用的名字(同样的服务名字相同,不要和别的服务同名) name: user_provide
    暴露服务的实现类
    //@Service为dubbo的注解 @Service @Component public class UserServiceImpl implements IUserService { @Override public List<User> findAll(){ return UserMapper.findAll(); } }

    搭建消费方

    引入依赖
    <dependency> <groupId>com.alibaba.boot</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>0.2.0</version> </dependency>
    配置文件
    # dubbo相关配置 dubbo: application: name: user_consumer registry: address: zookeeper://127.0.0.1:2181 monitor: protocol: registry # monitor: # protocol: registry consumer: # 关闭所有服务的启动时检查 (没有提供者时报错): check: false # 超时失败时间,单位为毫秒,默认为1秒 timeout: 10000 # 失败重试次数 retries: 2
    消费接口实现类
    //@Service为dubbo的注解 @Service @Component public class TestServiceImpl implements ITestService { @Reference //使用dubbo提供的reference注解引用远程服务 UserService userService; @Override public List<User> findAll(){ return userService.findAll(); } }

    测试略

    Processed: 0.024, SQL: 9