Java项目各框架环境配置

这篇具有很好参考价值的文章主要介绍了Java项目各框架环境配置。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

SpringBoot

  1. 使用Spring Initializr创建工程,勾选Spring Web
  2. 导入依赖
<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<version>1.18.20</version>
</dependency>
<dependency>
	<groupId>junit</groupId>
	<artifactId>junit</artifactId>
	<scope>test</scope>
</dependency>
  1. application.properties配置文件改为application.yml
    • 配置端口:
server: 
	port: 8080

Json序列化

Jackson

  1. 创建JacksonObjectMapper类并继承ObjectMapper
import static com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES;

/**
 * 对象映射器:基于jackson将Java对象转为json,或者将json转为Java对象
 * 将JSON解析为Java对象的过程称为 [从JSON反序列化Java对象]
 * 从Java对象生成JSON的过程称为 [序列化Java对象到JSON]
 */
public class JacksonObjectMapper extends ObjectMapper {

    public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";
    public static final String DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
    public static final String DEFAULT_TIME_FORMAT = "HH:mm:ss";

    public JacksonObjectMapper() {
        super();
        //收到未知属性时不报异常
        this.configure(FAIL_ON_UNKNOWN_PROPERTIES, false);

        //反序列化时,属性不存在的兼容处理
        this.getDeserializationConfig().withoutFeatures(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);


        SimpleModule simpleModule = new SimpleModule()
                .addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT)))
                .addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_FORMAT)))
                .addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_TIME_FORMAT)))

                .addSerializer(BigInteger.class, ToStringSerializer.instance)
                .addSerializer(Long.class, ToStringSerializer.instance)
                .addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT)))
                .addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_FORMAT)))
                .addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_TIME_FORMAT)));

        //注册功能模块 例如,可以添加自定义序列化器和反序列化器
        this.registerModule(simpleModule);
    }
}

  1. 创建config类并继承WebMvcConfigurationSupport
    在其中重写扩展消息转换器的方法,将新建的JacksonObjectMapper设为消息转换器
@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
    /**
     * 扩展spring mvc的消息转换器
     * @param converters
     */
    @Override
    protected void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
        log.info("扩展消息转换器……");
        //创建消息转换器对象
        MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter();
        //设置对象转换器,底层使用Jackson将java对象转为json
        messageConverter.setObjectMapper(new JacksonObjectMapper());
        //将上面的消息转换器对象追加到mvc的转换器集合中
        converters.add(0,messageConverter);
    }
}
  1. 将json转为java对象
ObjectMapper objectMapper = new ObjectMapper();
MyObject myObject = objectMapper.readValue(jsonString, MyObject.class);
  1. 将java对象转为json
ObjectMapper objectMapper = new ObjectMapper();
String jsonString = objectMapper.writeValueAsString(myObject);

fastjson

  1. 引入依赖
 <!--fastjson依赖-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
        </dependency>
  1. 新建config类添加配置
@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Bean//使用@Bean注入fastJsonHttpMessageConvert
    public HttpMessageConverter fastJsonHttpMessageConverters() {
        //1.需要定义一个Convert转换消息的对象
        FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
        FastJsonConfig fastJsonConfig = new FastJsonConfig();
        fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
        fastJsonConfig.setDateFormat("yyyy-MM-dd HH:mm:ss");
 
        SerializeConfig.globalInstance.put(Long.class, ToStringSerializer.instance);
 
        fastJsonConfig.setSerializeConfig(SerializeConfig.globalInstance);
        fastConverter.setFastJsonConfig(fastJsonConfig);
        HttpMessageConverter<?> converter = fastConverter;
        return converter;
    }
 
    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        converters.add(fastJsonHttpMessageConverters());
    }
}
  1. 将json转为java对象
MyObject myObject = JSON.parseObject(jsonString, MyObject.class);
  1. 将java对象转为json字符串
String jsonString = JSON.toJSONString(myObject);

Mybatis-Plus

  1. 导入依赖
<dependency>
	<groupId>org.mybatis.spring.boot</groupId>
	<artifactId>mybatis-spring-boot-starter</artifactId>
	<version>2.2.2</version>
</dependency>
<dependency>
	<groupId>com.baomidou</groupId>
	<artifactId>mybatis-plus-boot-starter</artifactId>
	<version>3.1.1</version>
</dependency>
  1. 编写配置文件application.yml
#下面这些内容是为了让MyBatis映射
mybatis:
  #指定Mybatis的Mapper文件
  mapper-locations=classpath: mappers/*xml
  #指定Mybatis的实体目录
  type-aliases-package: com.rainbow.entity

mybatis-plus:
  configuration:
    #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射.
    map-underscore-to-camel-case: true
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  global-config:
    db-config:
      id type: ASSIGN_ID
  1. 配置mapper、service、serviceImpl
    • mapper:创建接口继承BaseMapper;该接口用@Mapper注解
    • service:创建接口继承IService
    • serviceImpl:创建类实现service接口;继承ServiceImpl;用@Service注解该类

Mysql

  1. 导入依赖
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<version>5.1.47</version>
</dependency>

<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>druid</artifactId>
	<version>1.2.16</version>
</dependency>
  1. 配置文件application.yml
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/DatabaseName
    username: root
    password: root
    type: com.alibaba.druid.pool.DruidDataSource

Nginx

  1. 启动nginx
  2. 编写配置文件nginx.conf
# 定义后端服务器组,Nginx在这些服务器中分配请求负载
upstream ServerGroupName{
	# 定义服务器的地址
	server localhost:51601;
}
server {
	# nginx端口
	listen 8801;
	location / {
		root D:/workspace/app-web/ ;
		index index.html;
	}
	location ~/app/(.*) {
		proxy_pass http://app-gateway/$1;								#将请求中的app及之后的部分放到$1的位置
		proxy_set_header HOST $host;									#不改变源请求头的值
		proxy_pass_request_body on; 									#开启获取请求体
		proxy_pass_request_headers on; 									#开启获取请求头
		proxy_set_header X-Real-IP $remote_addr; 						# 记录真实发出请求的客户端IP
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;	#记录代理信息
}

或是在nginx.conf中引入其他.conf文件

worker_processes 1;
events {
	worker_connections 1024;
}
http {
	include mime.types;
	default_type application/octet-stream;
	sendfile on;
	keepalive_timeout 65;
	#引入自定义配置文件
	include ConfPackage/*.conf;
}

注意:修改完配置文件后需要使用 nginx -s reload 重新加载启动nginx文章来源地址https://www.toymoban.com/news/detail-608220.html

Redis

  1. 需要在服务器上启动Redis服务
  2. 在Java中引入依赖
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!--common-pool对象池-->
<dependency>
	<groupId>org.apache.commons</groupId>
	<artifactId>commons-pool2</artifactId>
</dependency>
  1. 配置文件application.yml中配置redis
spring:
  redis:
    host: 192.168.133.128
    port: 6379
    password: root
    lettuce:
      pool:
        max-active: 8
        max-idle: 8
        min-idle: 0
        max-wait: 100ms

  1. 注入RedisTemplate
@Autowired
private RedisTemplate redisTemplate

Nacos

  1. 服务器启动Nacos
  2. java导入依赖
  • 父工程引入Alibaba的SpringCloud依赖
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
    <version>2.2.6.RELEASE</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>
  • 客户端引入nacos-discovery依赖
<!-- nacos客户端依赖包 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
  1. 在配置文件application.yml中配置nacos
spring:
  cloud:
    nacos:
    	discovery: 
    		server-addr: localhost:8848
    	config: 
    		server-addr: localhost:8848
    		file-extension: yml

Feign

  1. 引入依赖
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
  1. 在服务消费者的启动类上添加注解@EnableFeignClients开启Feign的功能
  2. 在服务消费者的包下定义接口,加上服务提供者的接口
  3. 使用该接口实现远程调用

网关Gateway

  1. 引入依赖
<!--网关-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
  1. 编写基本配置
server:
  port: 10010 # 网关端口
spring:
  application:
    name: gateway # 服务名称
  cloud:
    nacos:
      server-addr: localhost:8848 # nacos地址
    gateway:
    globalcors:
		cors-configurations : 
			'[/**]': 				#匹配所有请求
				allowedOrigins: "*"	#跨域处理允许所有的域
				allowedMethods: 	#支持的方法
					- GET
					- POST
					- PUT
					- DELETE

      routes: # 网关路由配置
        - id: user-service # 路由id,自定义,只要唯一即可
          # uri: http://127.0.0.1:8081 # 路由的目标地址 http就是固定地址
          uri: lb://userservice # 路由的目标地址 lb就是负载均衡,后面跟服务名称
          predicates: # 路由断言,也就是判断请求是否符合路由规则的条件
            - Path=/user/** # 这个是按照路径匹配,只要以/user/开头就符合要求
          filters: 
          	- StripPrefix = 1	# 转发请求到达目标路径时去除一级路径,例:api/user/service转发后变为user/service(但该过滤器不能随便使用,以免转发后不能正常调用服务)

RabbitMQ

  1. 服务器启动RabbitMQ
  2. 引入依赖
<!--AMQP依赖,包含RabbitMQ-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
  1. 配置
spring:
  rabbitmq:
    host: 192.168.133.128 # 主机名
    port: 5672 # 端口
    virtual-host: / # 虚拟主机
    username: root # 用户名
    password: root # 密码
  1. 注入RabbitTemplate
@Autowired
private RabbitTemplate rabbitTemplate
  1. 服务提供者rabbitTemplate.convertAndSend
  2. 服务提供者@RabbitListener

Kafka

  1. 拉取镜像
docker pull zookeeper:3.4.14
  1. 创建容器
docker run -d --name zookeeper -p 2181:2181 zookeeper:3.4.14
  1. 导入依赖
<!-- kafkfa -->
<dependency>
	<groupId>org.springframework.kafka</groupId>
	<artifactId>spring-kafka</artifactId>
	<exclusions>
		<exclusion>
			<groupId>org.apache.kafka</groupId>
			<artifactId>kafka-clients</artifactId>
		</exclusion>
	</exclusions>
</dependency>
<dependency>
	<groupId>org.apache.kafka</groupId>
	<artifactId>kafka-clients</artifactId>
</dependency>
  1. 配置文件
server:
	port: 9991
spring:
	application:
		name: kafka-demo
	kafka:
		bootstrap-servers: 192.168.133.128:9092	#kafka地址
		producer:
			retries: 10	#重试次数
			key-serializer: org.apache.kafka.common.serialization.stringSerializer
			value-serializer: org.apache.kafka.common.serialization.stringSerializer
		consumer:
			group-id: test-hello-group	#组名称
			key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
			value-deserializer: org.apache.kafka.common.serialization.stringDeserializer

  1. 注入KafkaTemplate
  2. 生产者调用send(String topic,String message)
  3. 消费者使用注解@KafkaListener(topics = "xxx"),方法上用String message作参数接收消息

Elasticsearch

  1. 导入依赖
<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-high-level-client</artifactId>
</dependency>
  1. 初始化代码
RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(
        HttpHost.create("http://192.168.133.128:9200")
));

到了这里,关于Java项目各框架环境配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Java】IDEA 配置java开发环境(windows)

    刚才需要临时运行一个java脚本,java还是2、3年前学的,都忘光了。IDEA 2021还在我电脑装着,进去却忘记了怎么配置java环境,这里复习一下。 JDK中包含了JRE和java开发包(我现在只记得这些名词了😅😅): JRE :java运行环境(java runtime environment)又分jvm和java核心的类库。 J

    2024年02月16日
    浏览(34)
  • [VSCode] Java开发环境配置

    1.1 安装 VSCode Visual Studio Code 官方下载 地址: 详细安装步骤这里不做赘述,可参考: VSCode安装教程(超详细) 1.2 安装 JDK JDK 指 Java开发工具包(Java Development Kit) ,是用于开发Java应用程序和小程序的跨平台软件开发环境。 它包含了 Java运行时环境(Java Runtime Environment) ,

    2024年02月03日
    浏览(45)
  • Java开发环境安装与配置

    官网下载:Java Downloads | Oracle 本站下载: JDK8 Windows x64 Installer 找到你下载时保存的文件夹,双击相应的文件安装:jdk-8u381-windows-x64.exe 安装完成后的目录: 环境配置流程如下: 1、“我的电脑”右键的“弹出菜单”,点击“高级系统设置”  2、定义环境变量 点击环境变量,

    2024年02月14日
    浏览(29)
  • 【Java从0到1学习】02 Java 开发环境配置

    在本章节中我们将为大家介绍如何搭建Java开发环境。以及如何配置Java的开发环境。具体详情让我们一起来看看吧~ 首先我们需要下载 java 开发工具包 JDK,下载自己的系统选择对应的版本,本文以 Window 64位系统为例: 1、方式一:进入官网https://www.oracle.com/java/technologies/javas

    2024年02月16日
    浏览(28)
  • MacOS系统Java开发环境配置

    首先要安装jdk,进入Oracle官网 企业一般使用java8,进入页面后往下翻就能找到 这里选择macOS系统,只有一个安装包,这里新用户会要求注册,注册成功才能下载,下载完成后双击,会出现安装指引,一直点下一步直到安装完成 在 启动台-其他 中找到找到终端(terminal),打开后

    2024年02月13日
    浏览(38)
  • 1 Go语言开发环境搭建详细教程+go常见bug合集【Go语言教程】

    官网地址:golang.org,因为一些原因国内可能无法访问。可以使用下面第二个链接。 国内地址访问:https://golang.google.cn/dl或者https://www.golangtc.com/download 根据自己操作系统版本,下载安装即可,目录尽量选择全英文且没有空格和其他其他特殊字符。 2.1 Windows下 GOPATH:即默认的w

    2024年02月05日
    浏览(36)
  • Sublime Text 3配置 Java 开发环境

    《开发工具系列》 《开发语言-Java》 Java 是一种跨平台、面向对象、功能强大且安全可靠的编程语言。它有很多常用的开发工具,比如 Eclipse 、 IDEA 等等,相信大家多多少少都有所涉猎;而本篇 Huazie 将要介绍一个比较轻量级的开发工具 Sublime Text 3 ,并用它来配置 Java 开发环

    2024年02月20日
    浏览(27)
  • 预警 项目经验&BUG

    在方法上使用 @Scheduled 注解 cron 参数: cron是一个表达式,最多接收7个参数 从左到右分别表示:秒 分 时 天 月 周 年 参数以空格隔开,其中年不是必须参数,可以省略。 示例: @Scheduled(cron =\\\"0 0 0 * * * ?\\\") fixedRate 参数: fixedRate表示多久执行一次,单位是毫秒。 示例: @Sched

    2024年02月14日
    浏览(29)
  • 黑马头条项目经验&BUG

    同样是配置文件,但与application.yml有所不同 bootstrap.yml的加载比application.yml早 bootstrap.yml作用范围更广,可以被多个应用程序共享(可以在每个服务的application.yml中配置 spring: cloud: config: (name)url ,从而配置bootstrap.yml的位置) bootstrap.yml具有更高的优先级,可以覆盖application.y

    2024年02月14日
    浏览(26)
  • macOS中配置Java开发环境的详细步骤

    R语言某些包需要配置Java开发环境,作为一个软件小白,用mac本在安装的时候碰到了很多问题。本帖为自己安装过程的整理,操作写得比较细且很笨蛋,如有问题请各位大神轻喷~ 参考如下: 主要流程:Mac环境下配置Java开发环境(jdk maven tomcat idea) - 知乎 maven安装:https:/

    2024年02月04日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包