2. spring boot整合redis swagger(2刷)

1. 整合redis

key-value 存储系统,高性能的存储系统。NoSql (not only Sql),操作都是原子的

  • 字符串
  • 哈希
  • 列表
  • 集合
  • 排列集合
  • 位图
  • 超文本

pom和配置

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-redis</artifactId>
		</dependency>
spring:
  redis:
    host: 127.0.0.1
    port: 6379
    database: 1 #选择 数据库1,其实 正常都是用 0
    jedis:
      pool:
        max-active: 8
        max-wait: 1
        max-idle: 500
        min-idle: 0
    timeout: 200

RedisDao


/**
 *
 *数据操作层的RedisDao 类通过@Repository 注解来注入Spring IoC 容器中, 该类是通过RedisTemplate 来访问Redis的。
 * 通过注入StringRedisTemplate 的Bean 来对Redis 数据库中的字符串类型的数据进行操作, 写了两个方法,
 * 包括向Redis 中设置String 类型的数据和从Redis中读取String 类型的数据。
 */
@Repository
public class RedisDao {

    @Autowired
    private StringRedisTemplate template;

    //设置
    public  void setKey(String key,String value){
        ValueOperations<String, String> ops = template.opsForValue();
        ops.set(key,value,1, TimeUnit.MINUTES);//1分钟过期
    }
	
    //读取
    public String getValue(String key){
        ValueOperations<String, String> ops = this.template.opsForValue();
        return ops.get(key);
    }
}

进行测试

@RunWith(SpringRunner.class)
@SpringBootTest
public class Tests {
    
	//使用 LoggerFactory
	public static Logger logger= LoggerFactory.getLogger(Tests.class);


	@Autowired
    RedisDao redisDao;
    
	@Test
	public void testRedis(){
		redisDao.setKey("name","forezp");
		redisDao.setKey("age","11");
        
		logger.info(redisDao.getValue("name"));
        
		logger.info(redisDao.getValue("age"));
	}
    
}

docker 或 k8s安装 redis

docker 启动

 docker search redis
 docker pull redis
 docker images
 # 启动
 docker run -p 6379:6379 -d redis:latest redis-server
 
 docker ps
 
菜鸟教程:
docker run -p 6379:6379 -v $PWD/data:/data  -d redis:3.2 redis-server --appendonly yes

命令说明:
-p 6379:6379 : 将容器的6379端口映射到主机的6379端口

-v $PWD/data:/data : 将主机中当前目录下的data挂载到容器的/data

redis-server --appendonly yes : 在容器执行redis-server启动命令,并打开redis持久化配置
# 使用docker id 进入
docker exec -ti d0b86 redis-cli

docker exec -ti d0b86 redis-cli -h localhost -p 6379 docker exec -ti d0b86 redis-cli -h 127.0.0.1 -p 6379 docker exec -ti d0b86 redis-cli -h 172.17.0.3 -p 6379 // 注意,这个是容器运行的ip,可通过 docker inspect redis_s | grep IPAddress 查看

# 不懂
docker exec -it redis_s redis-cli
docker exec -it redis_s redis-cli -h 192.168.1.100 -p 6379 -a your_password //如果有密码 使用 -a参数
docker run -itd --name redis-test -p 6379:6379 redis

docker exec -it redis-test /bin/bash #可能不行

进入后执行:redis命令 set test 1

k8s启动


kubectl create deployment nginx-deployment --image=nginx --dry-run -o yaml>nginx-deployment.yaml

# 修改 配置文件 或者 执行这个 ,赋值 副本
kubectl scale deployment javademo1 --replicas=3

# 生成 expose的文件
kubectl expose deployment nginx-deployment --name=nginx-service --port=81 --target-port=80 --type=NodePort --dry-run -o yaml>nginx-service.yaml

# 默认 是随机的端口,改配置文件,写死6379也可。
spec:
  ports:
  - port: 81 #service端口
    protocol: TCP
    targetPort: 80 #Pod即容器端口
    nodePort: 30008 #定义NodePort端口如果不定义会随机生成一个端口
    
kubectl apply -f nginx-service.yaml
    
# 查看 随机的端口
kubectl get svc
redis-test       NodePort    10.102.207.89    <none>        6379:31646/TCP   41m

swagger

引入pom

		<dependency>
			<groupId>io.springfox</groupId>
			<artifactId>springfox-swagger2</artifactId>
			<version>2.6.1</version>
		</dependency>

		<dependency>
			<groupId>io.springfox</groupId>
			<artifactId>springfox-swagger-ui</artifactId>
			<version>2.6.1</version>
		</dependency>

配置

/**
 * @Configuration 注解, 表明是一个配置类,加上@EnableSwagger2 开启Swagger2 的功能
 */
@Configuration
@EnableSwagger2
public class Swagger2 {

    /**
     * Swagger2 中需要注入一个Docket 的Bean , 该 Bean 包含了apiInfo ,即基本API 文档的描述信息,以及包扫描的基本包名等信息
     * @return
     */
    @Bean
    public Docket createRestApi() {
        //Docket apiInfo 。所有的controller 都在 com.forezp.web 下
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.forezp.web"))
                .paths(PathSelectors.any())
                .build();
    }

    //api info 标题,说明,url,版本
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("springboot利用swagger构建api文档")
                .description("简单优雅的restfun风格,http://blog.csdn.net/forezp")
                .termsOfServiceUrl("http://blog.csdn.net/forezp")
                .version("1.0")
                .build();
    }
}

使用注解

    @ApiOperation(value="删除用户", notes="根据url的id来指定删除用户")
    @RequestMapping(value="/{id}", method= RequestMethod.DELETE)
    public String deleteUser(@PathVariable Long id) {
        userService.deleteUser(id);
        return "success";
    }

    @ApiIgnore//使用该注解忽略这个API
    @RequestMapping(value = "/hi", method = RequestMethod.GET)
    public String  jsonTest() {
        return " hi you!";
    }

    @ApiOperation(value = "12321",notes = "1231")

    @ApiImplicitParams({
            @ApiImplicitParam(dataTypeClass = String.class, paramType = "header", name = "Login-Key",required = true, value = "登录标识")
    })

    @GetMapping(value = "/pick/{carId}")
    public ResultDTO pickUpOrFetchOutTime(@PathVariable("carId") String carId) {
    }
@ApiModel(description = "组织架构")
@Data
public class OrgaByIdOutModel{

    @JsonFormat(shape = JsonFormat.Shape.STRING)
    @ApiModelProperty(value = "这个组织架构的ID", dataType = "Long", example = "672")
    private Long id;
    
}
@Slf4j
@Api(value = "测试 controller", tags = "tags上的内容,会显示")
@RestController
@RequestMapping(value = "/ignore", produces = MediaType.APPLICATION_JSON_VALUE)
public class Stay {
}

单个注解讲解

    3. 写生成文档的注解
       Swagger2 通过注解来生成API 接口文档,文档信息包括接口名、请求方法、参数、返回信息等。通常’悄况下用于生成在线API 文档,以下的注解能够满足基本需求,注解及其描述如下。
       @Api : 修饰整个类,用于描述Controller 类。
       @ApiOperation :描述类的方法,或者说一个接口。
       @ApiParam : 单个参数描述。
       @ApiModel :用对象来接收参数。
       @ApiProperty :用对象接收参数时,描述对象的一个字段。
       @ApiResponse: HTTP 响应的一个描述。
       @ApiResponses: HTTP 响应的整体描述。
       @Apilgnore :使用该注解,表示Swagger2 忽略这个API 。
       @ApiError : 发生错误返回的信息。
       @ApiParamlmplicit : 一个请求参数。
       @ApiParamsimplicit : 多个请求参数。
       @ApiImplicitParams
       @ApiImplicitParam

http://localhost:8082/swagger-ui.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值