Web实战课的学习笔记1

课程了解

核心:高并发的实现
技术点:
在这里插入图片描述
课程详情:
在这里插入图片描述

框架搭建

1.SpringBoot环境搭建
2.集成Thymeleaf,Rusult结果分装
3.集成Mybatis+Druid
4.集成Jedis+Redis安装+通用缓存Key封装

构建SpringBoot项目

新建项目

方法1:
新建project,选择Spring Initializr,点击Next,进行项目组和名称的修改,点击Next,选自所需的依赖,点击Next,确定项目名称和存储位置,点击finish。
在resource下创建application.properties。
方法2:
新建project,选择Maven,点击Create from archetype,选择新建quickstart项目。填写项目组和名称。点击Next,点击Finish。
在pom中添加SpringBoot的相关依赖,在java包下新建一个类作为SpringBoot的启动类,在这个类添加@SpringBootApplication注解,并新建main方法在里面写SpringApplication.run(启动类类名…class, args)。
新建与Java平级的resources包,右击这个包,找到Make Directory as,选择Resources Root,将其设置为存放资源所用的包。
两个方法的后续都是,在pom中添加thymeleaf、druid和fastjson的jar包

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
    <version>2.1.6.RELEASE</version>
</dependency>
        
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.10</version>
</dependency>

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.47</version>
</dependency>

在resource下创建application.properties,并在其中配置连接数据库和thymeleaf的前缀与后缀,在启动类同包下分别创建controller、dao、domain和service包,在resources下创建mapper包。

集成Mybatis

在pom中添加Mybatis相关jar包

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.2</version>
</dependency>

 <dependency>
     <groupId>org.mybatis.generator</groupId>
     <artifactId>mybatis-generator-core</artifactId>
     <version>1.3.5</version>
 </dependency>

在application.properties添加mybatis的相关配置

#mybatis
mybatis.type-aliases-package=com.imooc_miaosha.domain
#domain中放的是访问根数据的表
mybatis.configuration.map-underscore-to-camel-case=true
#将下划线转换为驼峰
mybatis.configuration.default-fetch-size=100
mybatis.configuration.default-statement-timeout=3000
mybatis.mapper-locations=classpath:mapper/**.xml
#扫描配置文件的路径

在domain包中创建数据表对象,按照表的列创建相应类型的属性,并写出对应的set和get方法。
在dao中创建domain下类的对应Mapper类,并给这个类添加@Mapper注解
在resources下的mapper下创建对应Mapper类的.xml文件,在mapper标签中的namespace属性是这个.xml所对应的Mapper类所在的位置。
注意(避免出现xxxService.xxxx()not found):
1.要给Mapper类添加@Mapper注解或是在启动类中添加@MapperScan(”扫描的包的路径“)注解。
2.application.properties中的mybatis.mapper-locations默认扫描的是resources下文件,注意classpath的路径与resources下的mapper包的.xml的路径要一致。
3.Mapper对应的.xml文件中的mapper标签中的namespace属性是这个.xml所对应的Mapper类所在的位置。
4.Mapper中的方法名与.xml中对应的sql语句的id要一致
5.xml中与Mapper方法名对应的id中的parameterType和resultType,需要和Mapper方法中的传入参数和返回值类型一致
6.如果Mapper的返回值类型为List<数据表类>,在.xml文件中对应的返回值要用resultMap,并在xml中配置这个resultMap,使数据库中的列与domain中的类的属性可以形成对应

集成redis

redis是以键值对进行存储的数据库,主要用于存储数据库中经常被访问的数据,是一个典型的NoSql数据库。

windows下的redis安装

https://github.com/MSOpenTech/redis下找到最新的redis包根据自己电脑的位数进行下载,按照百度的方法进行安装。
所遇到的问题:
1.ERR Client sent AUTH, but no password is set
解决方案:
在这里插入图片描述
或是在redis目录下打开redis.windows-service.conf,找到security下的#requirepass下设置密码,如下所示:
在这里插入图片描述
2. 用cmd启动redis,输入redis-server.exe redis.windows.conf,遇到“Invalid argument during startup: Failed to open the .conf file: redis.windows.conf CWD=C:\Program Files (x86)\Radis”,如下图
在这里插入图片描述
解决方案:若redis安装目录是某个文件夹,则输入命令时路径要加上双引号
在这里插入图片描述
但是出现上图红框中的错误
解决方案:
在这里插入图片描述
再输入下图红线的命令,启动成功

在这里插入图片描述

集成Redis

1.在pom中添加redis的jar包

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.9.0</version>
</dependency>

所遇到的问题:
添加pom之后报错:Re-run Spring Boot Configuration Annootation Processor to update gennerated,百度的解决方案是Settings —>Build ----> Annottation Processor
2.在application.properties添加redis的配置

#redis
spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.timeout=3
spring.redis.password=1234
spring.redis.jedis.pool.max-active=10
spring.redis.jedis.pool.max-idle=1000
spring.redis.jedis.pool.min-idle=500
spring.redis.jedis.pool.max-wait=100000

3.在启动类同包下创建包redis,在其中创建RedisConfig类,用于加载application中redis相关配置,为其添加@Component注解使其可以被扫描到,添加@ConfigurationProperties(prefix = “redis”)注解。在类中创建与在application.properties的redis配置名称一致的属性。
注意(解决@ConfigurationProperties下有红色波浪线):
方法一:出现Spring Boot Configuration Annotation Processor not found in classpath,给pom中添加

<!--用于解决使用注解@ConfigurationProperties报错-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

方法二:在@ConfigurationProperties前添加@Component
4.继续在redis包下创建RedisService类,用于对redis的控制,在其中编写对redis存储的数据进行增删改查的各种方法。
5.创建RedisPoolFactory 方法,用于初始化Jedis的连接池,因为我们是通过Jedis来进行对redis的操作的,在将相关的redis配置,添加到Jedis中后,redis的集成就基本上结束了。
6.因为redis是一个键值对存储数据库,key是提取数据的唯一标识。在多人开发的过程中,难免出现因key值重复而造成的数据覆盖。我们再创建一个KeyPrefix接口,不同的功能模块可以通过实现这个接口来定义不同的key值前缀。
运行所遇到的问题:
(1)因为开始时JedisFactory方法和redisService写在同一个类中,所以 代码编写中遇到RedisService中的JedisFactory方法找不到,通过查看控制台的输出内容可以得到它认为RedisService中的JedisPool和JedisFactory间形成了循环依赖
解决方案:因为Service与JedisPool之间其实没有关联,将其从中提出来,放入一个新建的类RedisPoolFactory中。
(2)为其添加controller方法用于测试,出现java.util.NoSuchElementException: Timeout waiting for idle object错误,经过查看后发现是Could not get a resource from the pool
错误原因:
application.properties中redis的配置与RedisConfig类中的属性对应不上
解决方案:
将application.properties中redis的配置换为:

redis.host=localhost
redis.port=6379
redis.timeout=3
redis.password=1234
redis.poolMaxTotal=10
redis.poolMaxIdle=10
redis.poolMaxWait=3

注意:
jedis包在2.4.1之后的高版本中JedisPoolConfig没有maxActive属性和MaxWait属性
(3)修改后,再次运行出现500错误,Connection refused: connect无法连接redis
解决方案:
先使用cmd进入redis目录输入redis-server.exe redis.windows.conf,启动redis。将这个cmd窗口保持在开启的状态,再开启一个cmd,进入redis目录输入redis-cli.exe -h 127.0.0.1 -p 6379。再回到idea重新运行项目,进入postman测试,连接成功。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值