技术栈
学成在线服务端基于Spring Boot构建,采用Spring Cloud微服务框架。
持久层:MySQL、MongoDB、Redis、ElasticSearch
数据访问层:使用Spring Data JPA 、Mybatis、Spring Data Mongodb等
业务层:Spring IOC、Aop事务控制、Spring Task任务调度、Feign、Ribbon、Spring AMQP、Spring Data Redis
等。
控制层:Spring MVC、FastJSON、RestTemplate、Spring Security Oauth2+JWT等
微服务治理:Eureka、Zuul、Hystrix、Spring Cloud Config等
遇到的问题
clean报错 [ERROR] [ERROR] Some problems were encountered while processing the POMs: [ERROR] ‘dependencies.dependency.version’ for org.springframework.cloud:spring-cloud-starter-feign:jar is missing.
解决方法:spring-cloud-starter-feign 没有指定版本,看一下cloud-parent版本2.0.3,选择了版本1.4.5.RELEASE
新学习知识
CmsSite:站点模型
CmsTemplate:页面模板
CmsPage:页面信息
属性说明:
1、定义一个页面需要指定页面所属站点
一个站点包括多个页面,比如:学成在线的门户站点(网站)包括了多个页面。
2、定义一个页面需要指定页面使用的模板
多个页面可以使用相同的模板,比如:商品信息模板,每个商品就是一个页面,所有商品使用同一个商品信息模板
注解说明:
@Data
, @EqualsAndHashCode(callSuper=false)
和 @Accessors(chain=true)
都是 Lombok 库提供的注解,它们分别用来简化 Java 类的定义以及处理常见 getter/setter、equals 和 hashCode 方法以及属性访问器的链式调用。
-
@Data
@Data
注解是 Lombok中的一个组合注解,它相当于同时应用了多个注解,包括但不限于:@ToString
: 自动生成toString()
方法。@EqualsAndHashCode
: 默认生成 equals 和 hashCode 方法,除非指定callSuper=false
(见下文)。@Getter / @Setter
: 为所有字段生成 getter 和 setter 方法。@RequiredArgsConstructor
: 如果类中有 final 或者非 null 字段,则生成一个构造函数。@AllArgsConstructor
: 如果没有明确指定,则还会生成一个包含所有字段的构造函数。
-
@EqualsAndHashCode(callSuper=false)
当应用于类上时,@EqualsAndHashCode
将自动生成equals()
和hashCode()
方法的实现。这里的callSuper=false
参数意味着在计算 equals 和 hashCode 时不考虑父类的字段。如果不设置或者设置为true
,则会默认调用超类的相应方法来参与计算。 -
@Accessors(chain=true)
这个注解作用于类级别,控制生成的 getter 和 setter 方法是否具有链式调用的能力。当chain=true
时,setter 方法将会返回this
对象,允许连续调用不同的 setter 方法而不必每次都重新获取对象引用,从而实现更简洁的代码风格:@Data @Accessors(chain=true) public class Person { private String firstName; private String lastName; } // 链式调用示例 Person person = new Person().setFirstName("John").setLastName("Doe");
-
@ToString
当你在类上添加@ToString
注解时,Lombok 会在编译期间生成一个toString()
方法的实现。这个方法返回当前对象的字符串表示形式,通常包含类中所有字段(非静态和非瞬态字段)的值。默认情况下,所有字段都会被包含在内,但如果需要排除某些字段,可以使用@ToString.Exclude
注解标记不需要的字段。示例:
@ToString public class Person { private String name; private int age; // 不会被包含在 toString 中 @ToString.Exclude private Address address; }
使用
@ToString
后,编译后的类会自动生成类似如下的toString()
方法:public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; }
-
@AllArgsConstructor
添加@AllArgsConstructor
注解到类上时,Lombok 会在编译期间生成一个全参数构造函数。这个构造函数接受类中所有字段(包括非静态和非瞬态字段)作为参数,并将这些参数赋值给对应的字段。示例:
@AllArgsConstructor public class Person { private String name; private int age; private Address address; }
编译后,Lombok 会自动生成如下构造函数:
public Person(String name, int age, Address address) { this.name = name; this.age = age; this.address = address; }
注解报错需要安装插件:compiler,plugin
新学习名词
cms(Content Management System)即内容管理系统,不同的项目对CMS的定位不同,比如:一个在线教育网站,有些公司认为CMS系统是对所有的课程资源进行管理,而在早期网站刚开始盛行时很多公司的业务是网站制作,当时对CMS的定位是创建网站,即对网站的页面、图片等静态资源进行管理。