当前位置: 代码网 > it编程>编程语言>Java > Spring Boot集成六大常用中间件,附集成源码,亲测有效

Spring Boot集成六大常用中间件,附集成源码,亲测有效

2024年08月02日 Java 我要评论
华为OD机试 2023B卷题库疯狂收录中,刷题。

在这里插入图片描述

嗨,你好呀,我是哪吒。

面试的时候总是被问到一些中间件的使用,比如redis、kafka、elasticsearch等。很多小伙伴回答的都不尽如人意,自己虽然用过、或者照着视频敲过,也实现过,但总感觉差了点什么。

因为你没有进行系统的总结过,对比过。

下面就针对几个常见的中间件(spring data jpa、spring security、redis、rabbitmq、kafka、elasticsearch),简述一下它们与springboot的集成方案,从0到1,从yml配置到调用api实现代码逻辑,做到真正意义上的即插即用。

万字论文,从0到1,只需1小时

通过openai5月14日1点发布的最新大模型chatgpt4o:

  • 1小时即可完成万字论文的编写
  • 通过gpt定制的降重大模型“中文论文降重”,2小时即可完成一篇优质的、查重率较低的万字论文。

在这里插入图片描述
在chatgpt4o对话框中输入:写一个spring boot+vue实现的车位管理系统的论文大纲,并对其具体章节进行详细描述。

1小时即可完成一份1万字论文的编写。

在这里插入图片描述

在这里插入图片描述

获取途径

现在商家有活动,仅仅需要24.9!!!!

现在有优惠:

👉 周卡优惠码是1024,会优惠5元(推荐人写:1024)

👉 半月卡、月卡、季卡优惠码是102410,会优惠10元。(推荐人写:102410)

邮箱写自己的邮箱!!!!

👉获取途径,网址在下面了:chatgpt4o,也可以私信哪吒,备注csdn ai

在这里插入图片描述

1、spring boot如何集成spring data jpa?

spring data jpa 是 spring 框架的一个模块,它简化了与 java 持久化 api (jpa) 的交互,提供了一种声明式的数据访问。在 spring boot 应用中集成 spring data jpa 可以提高数据访问层的效率。以下是集成 spring data jpa 的基本步骤:

(1)添加依赖

首先,需要在项目的 pom.xml(maven)或 build.gradle(gradle)文件中添加 spring data jpa 的依赖。

对于 maven:

<dependencies>
    <dependency>
        <groupid>org.springframework.boot</groupid>
        <artifactid>spring-boot-starter-data-jpa</artifactid>
    </dependency>
    <!-- 其他依赖 -->
</dependencies>

对于 gradle:

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    // 其他依赖
}

(2)配置数据源

在 application.properties 或 application.yml 文件中配置数据库连接信息。

# application.yml
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/your_database
    username: your_username
    password: your_password
    driver-class-name: com.mysql.cj.jdbc.driver

(3)配置 jpa

同样在配置文件中,配置 jpa 的相关属性,如实体扫描位置、数据库方言等。

# application.properties
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.mysql5innodbdialect

(4)实体类

创建 jpa 实体类,使用 jpa 注解来映射数据库表和列。

@entity
public class user {
    @id
    @generatedvalue(strategy = generationtype.identity)
    private long id;
    private string name;
    // getters and setters
}

(5)仓库接口

创建一个继承 jparepository 的接口,spring data jpa 会根据接口方法名称自动实现数据访问逻辑。

public interface userrepository extends jparepository<user, long> {
    // 可以添加自定义查询方法
    list<user> findbyname(string name);
}

(6)使用仓库

在服务层注入 userrepository 并使用它来执行数据操作。

@service
public class userservice {
    private final userrepository userrepository;

    @autowired
    public userservice(userrepository userrepository) {
        this.userrepository = userrepository;
    }

    public list<user> findallusers() {
        return userrepository.findall();
    }

    public list<user> findusersbyname(string name) {
        return userrepository.findbyname(name);
    }
    // 其他业务方法
}

(7)启动类

确保你的 spring boot 启动类上有 @springbootapplication 注解,这样 spring boot 才能自动扫描并加载配置。

@springbootapplication
public class myapp {
    public static void main(string[] args) {
        springapplication.run(myapp.class, args);
    }
}

完成以上步骤后,你的 spring boot 应用就可以使用 spring data jpa 进行数据库操作了。spring data jpa 提供了大量简化 crud 操作的方法,同时也支持通过方法名定义查询,极大地提高了开发效率。

2、spring boot如何集成spring security?

spring security 是一个功能强大且可高度定制的身份验证和访问控制框架。在 spring boot 应用中集成 spring security 可以提供安全的用户认证和授权机制。以下是集成 spring security 的基本步骤:

(1)添加依赖

首先,在项目的 pom.xml(maven)或 build.gradle(gradle)文件中添加 spring security 的依赖。

对于 maven:

<dependencies>
    <dependency>
        <groupid>org.springframework.boot</groupid>
        <artifactid>spring-boot-starter-security</artifactid>
    </dependency>
    <!-- 其他依赖 -->
</dependencies>

对于 gradle:

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-security'
    // 其他依赖
}

(2)配置 spring security

创建一个配置类,继承 websecurityconfigureradapter 并重写相应的方法来定义安全策略。

@configuration
@enablewebsecurity
public class securityconfig extends websecurityconfigureradapter {

    @override
    protected void configure(httpsecurity http) throws exception {
        http
            .authorizerequests()
                .antmatchers("/").permitall()  // 允许所有用户访问首页
                .anyrequest().authenticated()    // 其他所有请求需要认证
                .and()
            .formlogin()
                .loginpage("/login")            // 定制登录页
                .permitall()
                .and()
            .logout()
                .permitall();
    }
    
    // 可以添加更多的安全配置
}

(3)创建登录页

spring security 会根据 configure(httpsecurity http) 方法中定义的 loginpage 路径来寻找登录页。你可以创建一个自定义的登录页,或者使用 spring boot 默认提供的登录页。

(4)用户认证

spring security 支持多种用户认证方式,包括内存数据库、jdbc 数据库、ldap 等。以下是使用内存数据库进行用户认证的示例:

@autowired
public void configureglobal(authenticationmanagerbuilder auth) throws exception {
    auth
        .inmemoryauthentication()
            .withuser("user").password(passwordencoder().encode("password")).roles("user")
            .and()
            .withuser("admin").password(passwordencoder().encode("admin")).roles("user", "admin");
}

@bean
public passwordencoder passwordencoder() {
    return new bcryptpasswordencoder();
}

(5)启动类

确保你的 spring boot 启动类上有 @springbootapplication 注解,这样 spring boot 才能自动扫描并加载配置。

@springbootapplication
public class myapp {
    public static void main(string[] args) {
        springapplication.run(myapp.class, args);
    }
}

(6)自定义安全配置

根据需要,你可以添加更多的安全配置,如密码策略、记住我功能、cors 过滤器、自定义权限验证等。

(7)测试

启动应用并访问受保护的资源,以确保安全配置按预期工作。

通过以上步骤,你可以在 spring boot 应用中集成 spring security,实现用户认证和授权。spring security 提供了灵活的扩展点,允许你根据应用的具体需求定制安全策略。

3、spring boot如何集成redis?

在spring boot中集成redis是一个相对简单的过程,主要得益于spring boot对各种存储解决方案的自动配置支持。

以下是集成redis的基本步骤:

(1)添加依赖

首先,需要在项目的pom.xml文件中添加spring boot对redis支持的依赖。对于使用spring data redis的项目,可以添加以下依赖:

<dependencies>
    <!-- spring boot starter data redis -->
    <dependency>
        <groupid>org.springframework.boot</groupid>
        <artifactid>spring-boot-starter-data-redis</artifactid>
    </dependency>
    <!-- 其他依赖 -->
</dependencies>

确保使用的是与spring boot版本兼容的redis依赖版本。

(2)配置redis服务器

在application.properties或application.yml文件中配置redis服务器的地址和端口。

spring:
  redis:
    host: 127.0.0.1
    port: 6379
    password: 123456

(3)自动配置

spring boot将自动配置spring data redis连接工厂和操作库,无需手动配置。

(4)使用redisrepository

如果你使用spring data redis,可以创建一个继承redisrepository的接口来简化数据访问层的编码。

@repository
public interface myredisrepository extends crudrepository<myentity, string> {
    // 自定义查询方法...
}

(5)注入redistemplate

在需要使用redis的组件中,注入stringredistemplate或redistemplate来执行各种操作。

@service
public class myservice {
    @autowired
    private stringredistemplate redistemplate;

    public void dosomething() {
        // 使用redistemplate操作redis
    }
}

(6)使用 lettuce 或 jedis 客户端

从spring boot 2.0开始,默认的redis客户端是lettuce。如果你更喜欢使用jedis,可以在application.properties中配置:

spring.redis.lettuce.enabled=false
spring.redis.jedis.enabled=true

(7)配置ssl连接

如果redis服务器配置了ssl,需要添加相关依赖并配置ssl连接。

(8)集群支持

如果使用redis集群,需要配置集群节点信息:

spring.redis.cluster.nodes=127.0.0.1:7000,127.0.0.1:7001

(9)测试连接

启动应用程序后,可以通过注入的redistemplate或自定义的repository来测试redis连接是否成功。

(10)使用spring cache

如果你想要利用redis作为spring的缓存提供者,可以添加spring-boot-starter-cache依赖,并在配置中启用对redis的缓存支持。

4、spring boot如何集成rabbitmq?

在spring boot中集成rabbitmq主要涉及以下步骤:

(1)添加依赖

在项目的pom.xml文件中添加rabbitmq的spring boot starter依赖。

<dependencies>
    <!-- spring boot starter for rabbitmq -->
    <dependency>
        <groupid>org.springframework.boot</groupid>
        <artifactid>spring-boot-starter-amqp</artifactid>
    </dependency>
    <!-- 其他依赖 -->
</dependencies>

(2)配置rabbitmq

在application.properties或application.yml中配置rabbitmq服务器的连接信息。

spring:
  rabbitmq:
    addresses: 127.0.0.1
    username: guest
    password: guest

(3)配置connectionfactory

如果需要自定义connectionfactory,可以创建一个配置类并使用@configuration注解。在该类中,可以使用@bean注解来声明一个connectionfactory。

@configuration
public class rabbitmqconfig {

    @bean
    public connectionfactory connectionfactory() {
        connectionfactory factory = new connectionfactory();
        factory.sethost("127.0.0.1");
        factory.setusername("guest");
        factory.setpassword("guest");
        return factory;
    }
}

(4)配置rabbitmq的listener容器

使用simplemessagelistenercontainer作为消息监听容器。在配置类中声明并配置它:

@configuration
@enablerabbit
public class rabbitmqconfig extends abstractrabbitlistenercontainerfactory {

    @autowired
    private connectionfactory connectionfactory;

    @override
    protected connectionfactory getconnectionfactory() {
        return connectionfactory;
    }

    @bean
    public simplemessagelistenercontainer container() {
        simplemessagelistenercontainer container = new simplemessagelistenercontainer();
        container.setconnectionfactory(connectionfactory);
        container.setqueuenames("myqueue");
        container.setmessagelistener(messagelistener());
        return container;
    }

    @bean
    public messagelistener messagelistener() {
        return new mymessagelistener();
    }
}

(5)编写消息监听者

创建一个消息监听者,实现messagelistener接口或使用@rabbitlistener注解。

public class mymessagelistener implements messagelistener {

    @override
    public void onmessage(message message, channel channel) throws exception {
        // 处理接收到的消息
    }
}

或者使用注解:

@component
public class mymessagelistener {

    @rabbitlistener(queues = "myqueue")
    public void listen(string message) {
        // 处理接收到的字符串消息
    }
}

(6)配置交换机和队列

如果需要,可以配置自定义的交换机和队列,以及它们之间的绑定关系。

@bean
public queue myqueue() {
    return new queue("myqueue", true);
}

@bean
public fanoutexchange myfanoutexchange() {
    return new fanoutexchange("myfanoutexchange");
}

@bean
public binding mybinding() {
    return bindingbuilder.bind(myqueue()).to(myfanoutexchange());
}

(7)测试连接

启动应用程序后,可以通过发送和接收消息来测试rabbitmq连接是否成功。

(8)配置管理端点

如果你希望spring boot暴露rabbitmq的健康和信息端点,可以添加以下配置:

management.endpoints.web.exposure.include=health,info,rabbitmq

(9)高级配置

根据需要,可能还需要配置其他高级特性,如消息确认、事务、ttl(消息存活时间)、死信交换机等。

5、spring boot如何集成apache kafka?

在spring boot中集成apache kafka主要涉及以下步骤:

(1)添加依赖:

在项目的pom.xml文件中添加spring for apache kafka的依赖。

<dependencies>
    <!-- spring boot starter for apache kafka -->
    <dependency>
        <groupid>org.springframework.kafka</groupid>
        <artifactid>spring-kafka</artifactid>
    </dependency>
    <!-- 其他依赖 -->
</dependencies>

(2)配置kafka连接

在application.properties或application.yml中配置kafka的连接信息。

spring:
  kafka:
    bootstrap-servers: localhost:9092

如果需要配置更多的kafka属性,比如消费者组、序列化器等,可以继续添加:

spring.kafka.consumer.group-id=my-group
spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.stringdeserializer
spring.kafka.consumer.value-deserializer=org.apache.kafka.common.serialization.stringdeserializer

(3)配置kafka生产者

创建一个配置类,并通过@enablekafka注解启用kafka配置,并定义kafka生产者的相关配置。

@configuration
@enablekafka
public class kafkaproducerconfig {

    @bean
    public producerfactory<string, string> producerfactory() {
        // 创建并配置kafka生产者工厂
        return new defaultkafkaproducerfactory<>(producerconfigs());
    }

    @bean
    public map<string, object> producerconfigs() {
        map<string, object> props = new hashmap<>();
        props.put(producerconfig.bootstrap_servers_config, "localhost:9092");
        props.put(producerconfig.key_serializer_class_config, stringserializer.class);
        props.put(producerconfig.value_serializer_class_config, stringserializer.class);
        return props;
    }

    @bean
    public kafkatemplate<string, string> kafkatemplate() {
        return new kafkatemplate<>(producerfactory());
    }
}

(4)编写消息生产者

创建一个生产者,使用kafkatemplate发送消息。

@service
public class kafkaproducerservice {

    @autowired
    private kafkatemplate<string, string> kafkatemplate;

    public void send(string topic, string message) {
        kafkatemplate.send(topic, message);
    }
}

(5)配置kafka消费者

创建一个配置类,定义kafka消费者的相关配置,并启用kafka监听器。

@configuration
@enablekafka
public class kafkaconsumerconfig {

    @bean
    public concurrentkafkalistenercontainerfactory<string, string> kafkalistenercontainerfactory() {
        // 创建并配置kafka监听器容器工厂
        return new concurrentkafkalistenercontainerfactory<>();
    }

    @bean
    public kafkalistenerannotationbeanpostprocessor kafkalistenerannotationbeanpostprocessor() {
        return new kafkalistenerannotationbeanpostprocessor();
    }
}

(6)编写消息消费者

创建一个消费者,使用@kafkalistener注解来监听特定主题的消息。

@component
public class kafkaconsumerservice {

    @kafkalistener(topics = "mytopic", groupid = "my-group")
    public void listen(string message) {
        // 处理接收到的消息
    }
}

(7)测试连接

启动应用程序后,可以通过发送消息到kafka主题并查看消费者是否能够接收到消息来测试kafka连接是否成功。

(8)配置管理端点

如果你希望spring boot暴露kafka的健康和信息端点,可以添加以下配置:

management.endpoints.web.exposure.include=health,info,kafka

(9)高级配置

根据需要,可能还需要配置其他高级特性,如事务管理、自定义分区器、自定义序列化器等。

6、spring boot如何集成elasticsearch?

在spring boot中集成elasticsearch主要涉及以下步骤:

(1)添加依赖

在项目的pom.xml文件中添加spring data elasticsearch的依赖。确保你使用的版本与elasticsearch服务器的版本兼容。

<dependencies>
    <!-- spring boot starter data elasticsearch -->
    <dependency>
        <groupid>org.springframework.boot</groupid>
        <artifactid>spring-boot-starter-data-elasticsearch</artifactid>
    </dependency>
    <!-- 其他依赖 -->
</dependencies>

(2)配置elasticsearch连接:

在application.properties或application.yml中配置elasticsearch服务器的连接信息。

spring:
  elasticsearch:
    rest:
      uris: "http://localhost:9200"

(3)配置elasticsearch repositories:

如果你使用spring data elasticsearch,可以创建一个继承elasticsearchrepository的接口来简化数据访问层的编码。

public interface myelasticsearchrepository extends elasticsearchrepository<myentity, string> {
    // 自定义查询方法...
}

(4)配置elasticsearch客户端

如果需要自定义elasticsearch客户端,可以创建一个配置类并使用@configuration注解。在该类中,可以使用@bean注解来声明一个resthighlevelclient。

@configuration
public class elasticsearchconfig {

    @bean
    public resthighlevelclient elasticsearchclient() {
        final httpclient httpclient = httpclientbuilder.create().build();
        final httphost httphost = new httphost("localhost", 9200, "http");
        return new resthighlevelclient(httpclient, restclientbuilder.httpclientconfigcallback(), collections.singletonlist(httphost));
    }
}

(5)编写实体类映射

定义实体类,并使用注解标注实体类属性以映射到elasticsearch的索引字段。

@document(indexname = "my_index")
public class myentity {
    @id
    private string id;
    @field(type = fieldtype.text)
    private string text;
    // 其他字段和getter/setter
}

(6)使用elasticsearchrepository

注入elasticsearchrepository并在业务逻辑中使用它进行crud操作。

@service
public class myentityservice {

    @autowired
    private myelasticsearchrepository repository;

    public void save(myentity entity) {
        repository.save(entity);
    }

    public list<myentity> findall() {
        return repository.findall();
    }

    // 其他业务逻辑...
}

(7)测试连接:

启动应用程序后,可以通过发送查询到elasticsearch并检查返回的数据来测试elasticsearch连接是否成功。

(8)配置elasticsearch索引:

根据需要,可能还需要配置elasticsearch的索引设置,如分片、副本、映射等。

(9)高级配置:

根据需要,可能还需要配置其他高级特性,如自定义分析器、索引刷新间隔等。


3万字80道java经典面试题总结(2024修订版)- java基础篇

2 万字 42 道java经典面试题总结(2024修订版)- java集合篇

4 万字 102 道java经典面试题总结(2024修订版)- 多线程篇

10万字208道java经典面试题总结(2024修订版)- ssm篇


🏆文章收录于:100天精通java从入门到就业

全网最细java零基础手把手入门教程,系列课程包括:java基础、java8新特性、java集合、高并发、性能优化等,适合零基础和进阶提升的同学。

🏆哪吒多年工作总结:java学习路线总结,搬砖工逆袭java架构师

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天csdn在线答疑。

点击下方名片,回复1024,获取《10万字208道java经典面试题总结(2024修订版).pdf 》

在这里插入图片描述

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com