org.springframework.boot

spring-boot-maven-plugin

在common下创建domin(放实体类)和service(放接口)两个文件夹

在domin中创建User.java实体类(这里有一个坑,就是该实体类一定要实现java.io.Serializable这个接口,否则会报错这是因为一个类只有实现了Serializable接口,它的对象才是可序列化的。如果要序列化某些类的对象,这些类就必须实现Serializable接口。而实际上,Serializable是一个空接口,没有什么具体内容,它的目的只是简单的标识一个类的对象可以被序列化。这是我踩过的一个坑,大家可以试着把implements Serializable 去掉,肯定会报错的,报错中会有一句

Serialized class com.yykj.mall.dto.ProductListItemDTO must implement java.io.Serializable):

package com.example.common.domin;

import java.io.Serializable;

public class User implements Serializable {

private int id;

private String name;

private int age;

private String sex;

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public String getSex() {

return sex;

}

public void setSex(String sex) {

this.sex = sex;

}

@Override

public String toString() {

return “User{” +

“id=” + id +

“, name='” + name + ‘’’ +

“, age=” + age +

“, sex='” + sex + ‘’’ +

‘}’;

}

}

在service中创建UserService接口:

package com.example.common.service;

import com.example.common.domin.User;

/*

*@ZN

*@date 2019/11/11

*/

public interface UserService {

User findUser();

}

application.properties这个文件是空的,大家不用理会,此时,common模块基本完成。

接下来就是provider模块了

如上图,pom.xml添加依赖:

xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd”>

4.0.0

org.springframework.boot

spring-boot-starter-parent

2.2.1.RELEASE

com.example

provider

0.0.1-SNAPSHOT

jar

provider

Demo project for Spring Boot

UTF-8

UTF-8

1.8

0.10

com.example

common

0.0.1-SNAPSHOT

org.springframework.boot

spring-boot-starter

org.springframework.boot

spring-boot-starter-test

test

org.junit.vintage

junit-vintage-engine

com.alibaba

dubbo

2.5.5

log4j

log4j

com.101tec

zkclient

${zkclient.version}

org.mybatis.spring.boot

mybatis-spring-boot-starter

1.3.1

org.springframework.boot

spring-boot-starter-jdbc

org.mariadb.jdbc

mariadb-java-client

2.5.1

com.alibaba

druid

1.0.11

org.springframework.boot

spring-boot-maven-plugin

我们这边使用springboot,因为基本上都封装好了,配置就很简单了。我们先新增一个application.yml,具体配置如下,这边直接将mybatis的配置写在配置文件里了,就不需要像ssm一样需要xml文件配置了。application.yml:

server:

port: 8082

servlet:

context-path: /

spring:

datasource:

name: test

url: jdbc:mysql://127.0.0.1:3306/springdb

username: root

password: root

使用druid数据源

type: com.alibaba.druid.pool.DruidDataSource

driver-class-name: com.mysql.jdbc.Driver

filters: stat

maxActive: 20

initialSize: 1

maxWait: 60000

minIdle: 1

timeBetweenEvictionRunsMillis: 60000

minEvictableIdleTimeMillis: 300000

validationQuery: select ‘x’

testWhileIdle: true

testOnBorrow: false

testOnReturn: false

poolPreparedStatements: true

maxOpenPreparedStatements: 20

mybatis:

type-aliases-package: domain

同时,我们需要在项目中配置dubbo,让该项目成为提供者。

SpringBoot_Dubbo_Provider 的 spring-dubbo.xml:

xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”

xmlns:dubbo=“http://code.alibabatech.com/schema/dubbo”

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd

http://code.alibabatech.com/schema/dubbo

http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

Springboot是使用类来作为启动器的,所以启动器ProviderApplication.java,在启动器中将dubbo的配置文件引用,并且去扫描mapper包。

package com.example.provider;

import org.mybatis.spring.annotation.MapperScan;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.context.annotation.ImportResource;

import java.io.IOException;

@SpringBootApplication

@ImportResource({“classpath:spring-dubbo.xml”})

@MapperScan(“mapper”)

public class ProviderApplication {

public static void main(String[] args) {

SpringApplication.run(ProviderApplication.class, args);

System.out.println(“服务端启动成功!!!”);

try {

System.in.read();

} catch (IOException e) {

e.printStackTrace();

}

}

}

同样我们也要为这个项目写一个启动器。在启动器中加载dubbo配置文件 。这里提供者和消费者两个项目不能使用相同的端口号,所以消费者这边端口我使用的是8081 提供者为8082。

也就是在provider中的application.properties中写上server.port=8082,在customer中的application.properties中写上server.port=8081

然后创建mapper文件夹,在里面创建UserMapper接口,接口内容如下:

package com.example.provider.mapper;

import com.example.common.domin.User;

import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper

public interface UserMapper {

@Results(id = “userMap”, value = {

@Result(column = “id”, property = “id”),

@Result(column = “name”, property = “name”),

@Result(column = “age”, property = “age”),

@Result(column = “sex”, property = “sex”)})

@Select(“SELECT * FROM u_user”)

List getAll();

@Select(“SELECT * FROM u_user t WHERE t.id = #{id}”)

@ResultMap(“userMap”)

User getOne(Long id);

}

在service文件夹下的Impl中编写UserImpl接口的实现类,内容如下:

package com.example.provider.service.impl;

import com.example.common.domin.User;

import com.example.common.service.UserService;

import com.example.provider.mapper.UserMapper;

import org.springframework.beans.factory.annotation.Autowired;

public class UserImpl implements UserService {

@Autowired

private UserMapper userMapper;

@Override

public User findUser() {

return userMapper.getOne(1L);

}

}

此时provider服务端就编写完毕了。

接下来就是编写customer消费端了:

pom.xml添加依赖:

xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd”>

4.0.0

org.springframework.boot

spring-boot-starter-parent

2.2.1.RELEASE

com.example

customer

0.0.1-SNAPSHOT

jar

customer

Demo project for Spring Boot

UTF-8

UTF-8

1.8

0.10

com.example

common

0.0.1-SNAPSHOT

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-starter

org.springframework.boot

spring-boot-starter-test

test

org.junit.vintage

junit-vintage-engine

com.alibaba

dubbo

2.5.5

log4j

log4j

com.101tec

zkclient

${zkclient.version}

org.springframework.boot

spring-boot-maven-plugin

接下来要为dubbo编写xml配置文件,在resource文件夹中新建spring-dubbo.xml文件,配置内容如下:

xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”

xmlns:dubbo=“http://code.alibabatech.com/schema/dubbo”

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd

http://code.alibabatech.com/schema/dubbo

http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

然后就是编写controller了,创建UserController.java文件,调用common中的UserService接口,这里是用注解的形式注入的

package com.example.customer.controller;

import com.alibaba.dubbo.config.annotation.Reference;

import com.example.common.domin.User;

import com.example.common.service.UserService;

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

/**

Created with IntelliJ IDEA. User: zj Date: 2019/11/12 Time: 10:45 Description:

*/

@RestController

public class UserController {

@Resource

@Reference(version = “1.0.0”)

private UserService userService;

@GetMapping(“getUser”)

public User user() {

System.out.println(“进来了!!!!!!!!!!!!!!!!”);

System.out.println(userService.hashCode() + “!!!”);

System.out.println(userService.findUser());

return userService.findUser();

}

}

再给customer消费端启动类CustomerApplication:

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

最后

现在其实从大厂招聘需求可见,在招聘要求上有高并发经验优先,包括很多朋友之前都是做传统行业或者外包项目,一直在小公司,技术搞的比较简单,没有怎么搞过分布式系统,但是现在互联网公司一般都是做分布式系统。

所以说,如果你想进大厂,想脱离传统行业,这些技术知识都是你必备的,下面自己手打了一份Java并发体系思维导图,希望对你有所帮助。

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

再给customer消费端启动类CustomerApplication:

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。[外链图片转存中…(img-2xXJ9jBI-1713308638694)]

[外链图片转存中…(img-vporRFLq-1713308638695)]

[外链图片转存中…(img-6QotvDSw-1713308638695)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

最后

现在其实从大厂招聘需求可见,在招聘要求上有高并发经验优先,包括很多朋友之前都是做传统行业或者外包项目,一直在小公司,技术搞的比较简单,没有怎么搞过分布式系统,但是现在互联网公司一般都是做分布式系统。

所以说,如果你想进大厂,想脱离传统行业,这些技术知识都是你必备的,下面自己手打了一份Java并发体系思维导图,希望对你有所帮助。

[外链图片转存中…(img-O867F9Oi-1713308638695)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

相关链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: