likes
comments
collection
share

前端开发学习Spring boot,有关开发的一些基础知识

作者站长头像
站长
· 阅读数 22

本文是Spring boot学习第四篇,前面分别是

这几天分别学习了Spring boot的项目模板怎么生成,生成后项目结构如何?之后是写一个简单的接口和使用数据库,在上几篇的学习中,涉及很多基础知识,本文说明一下。

java的包管理

paakage关键字

在Java中,package关键字用于声明一个包(Package)。包是用来组织类和接口的一种机制,它可以避免类名冲突,并可以控制类的访问权限。

比如可能有一个名为User的类,这个类在helloWorld.start包中:

package helloWorld.start;

public class User {
    // ...
}

这意味着User类的全名是helloWorld.start.User

包还可以嵌套。例如有一个名为admin的子包,在这个子包中有一个名为AdminUser的类:

package helloWorld.start.admin;

public class AdminUser {
    // ...
}

这意味着AdminUser类的全名是helloWorld.start.admin.AdminUser

在大型项目中,合理地使用包可以更好地组织代码。例如,所有和用户相关的类都放在user包中,所有和订单相关的类都放在order包中。

package访问规则

在Java中,如果两个类在同一个包中,那么它们可以直接互相访问,不需要任何导入(import)语句。例如,如果ClassAClassB都在com.example包中,那么ClassA可以直接使用ClassB,反之亦然。

package com.example;

public class ClassA {
    ClassB b = new ClassB();
}
package com.example;

public class ClassB {
    ClassA a = new ClassA();
}

但是,如果两个类在不同的包中,那么它们不能直接互相访问。需要在一个类中使用import语句来导入另一个类。例如,如果ClassAcom.example包中,ClassBcom.example.sub包中,那么ClassA想要使用ClassB,就需要导入ClassB

package com.example;

import com.example.sub.ClassB;

public class ClassA {
    ClassB b = new ClassB();
}
package com.example.sub;

public class ClassB {
    // ...
}

需要注意的是,如果一个类是默认访问级别(没有public修饰符),那么它只能被同一个包中的其他类访问,即使使用了import语句也无法在其他包中访问。

package我觉得就是官方出的一个帮助你分类的工具,顺便加了一些辅助功能。对于前端来说,本身文件就是分类啊,不用什么包之类的。

java的maven

maven这个包依赖管理工具,其实和nodejs的npm有相似之处。大家都知道npm有淘宝镜像。其实maven也有镜像,阿里云镜像。

在下载maven后可以直接修改其配置文件,Maven中央仓库默认的URL是https://repo.maven.apache.org/maven2/,通常情况下不需要进行任何配置就可以使用它。但是考虑有些包下载非常慢,可以改变中央仓库的URL,或者添加其他的仓库,可以在settings.xml文件中进行配置。

settings.xml文件通常位于Maven安装目录的conf目录下。可以在这个文件中的<mirrors>元素下添加一个<mirror>元素来配置仓库的镜像。以下的配置将中央仓库的URL改为了阿里云的镜像站点:

<mirrors>
  <mirror>
    <id>alimaven</id>
    <name>aliyun maven</name>
    <url>https://maven.aliyun.com/nexus/content/groups/public/</url>
    <mirrorOf>central</mirrorOf>        
  </mirror>
</mirrors>

在这个配置中,<id><name>元素可以随意填写,<url>元素是镜像站点的URL,<mirrorOf>元素指定了这个镜像是哪个仓库的镜像,central表示中央仓库。

修改后可以覆盖当前项目maven的配置文件,具体修改步骤,我的idea是社区版的,打开偏好

前端开发学习Spring boot,有关开发的一些基础知识

然后搜索maven

前端开发学习Spring boot,有关开发的一些基础知识

可以将截图中马赛克改为电脑本地的maven配置。

示例项目中的注解解释

在我前几篇文章里面,涉及一些注解,在这里解释什么作用。

@Data、@NoArgsConstructor和@AllArgsConstructor

package helloWorld.start;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Result {

    private int code;
    private String message;
    private Object data;

    public static Result success(Object data) {
        return new Result(200, "操作成功", data);
    }

    public static Result error(String message) {
        return new Result(500, message, null);
    }
}

上面中的@Data@NoArgsConstructor@AllArgsConstructor都是什么作用?

@Data:这个注解会自动为类的所有字段生成getter和setter方法,同时还会生成equalshashCodetoString方法。这样你就不需要手动编写这些方法了。

@NoArgsConstructor@AllArgsConstructor都是Lombok库提供的注解,用于自动生成构造器。

@NoArgsConstructor会生成一个无参构造器。例如:

import lombok.NoArgsConstructor;

@NoArgsConstructor
public class User {
    private String name;
    private String email;
}

上述代码会生成如下的无参构造器:

public User() {
}

@AllArgsConstructor会生成一个包含所有成员变量的构造器。例如:

import lombok.AllArgsConstructor;

@AllArgsConstructor
public class User {
    private String name;
    private String email;
}

上述代码会生成如下的构造器:

public User(String name, String email) {
    this.name = name;
    this.email = email;
}

这两个注解可以帮助你减少手动编写构造器的工作量。

@Mapper

package helloWorld.start.dba.mapper;

import helloWorld.start.dba.User;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface UserMapper {

    @Select("SELECT * FROM user WHERE id = #{id}")
    User findById(@Param("id") Long id);

    @Insert("INSERT INTO user(name, age) VALUES(#{name}, #{age})")
    int insert(User user);

    @Update("UPDATE user SET name=#{name}, age=#{age} WHERE id=#{id}")
    int update(User user);

    @Delete("DELETE FROM user WHERE id=#{id}")
    int deleteById(@Param("id") Long id);

    @Select("SELECT * FROM user")
    List<User> findAll();
}

@Mapper是MyBatis框架中的一个注解,用于标记一个接口作为MyBatis的映射接口。 在MyBatis中,映射接口是一个定义了一组方法的接口,这些方法对应了SQL查询。MyBatis会为这个接口生成一个实现类,这个实现类中的方法会执行实际的SQL查询。

至于@Select@Insert@Update等都是MyBatis框架提供的注解,它们用于在Mapper接口的方法上定义SQL语句。

@Autowired

@Autowired是Spring框架的一个注解,用于自动装配bean。

至于bean,在Spring框架中,Bean是一个被Spring IoC容器管理的对象。这个对象的创建、初始化、销毁等生命周期都由Spring来管理。Bean可以是一个数据库连接、一个服务类、一个控制器类等等。

当Spring看到这个注解时,它会在容器中查找匹配的bean,并自动将它注入到被@Autowired注解的字段、构造器或方法中。

使用@Autowired的例子,字段注入:

@Service
public class UserService {

    @Autowired
    private UserRepository userRepository;

    // ...
}

在这个例子中,Spring会自动将UserRepository的实例注入到userRepository字段中。省去了new 类创建实例的过程。

转载自:https://juejin.cn/post/7372006887016054811
评论
请登录