1、首先要自己创建一个数据库,创造所有的属性放在pojo方法下面,我们这里定义了两个方法,一个是员工属性,一个是员工部门,为了方便操作我们导入了lombok包,这个包可以自动创建有参构造和无参数构造。引入代码如图一所示,随后便是定义构造,这里由于日期构造复杂,我们自己手写了有参构造函数,随后在函数内部给其赋值。@Data注解是由Lombok库提供的,会生成getter、setter以及equals()、hashCode()、toString()等方法
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
2、随后我们要实现这两个类的接口函数,首先导入@Repository这个注解,将接口交给SPringBoot处理,在接口中定义或者导入数据库并且实现增删改查基本操作。其中@Autowired可以标注在属性上、方法上和构造器上,来完成自动装配。默认是根据属性类型,spring自动将匹配到的属性值进行注入,然后就可以使用这个属性,这个方法和@Resource都是实现Bean的依赖注入的,其中@Autowired是通过属性进行注入,其中有一个required函数默认是True表示强制进行注入,如果没有存在同类型的属性就会报错也就是说一个注解要有一个Bean来匹配,而且超过一个Bean也会报错,Qualifier(value)可以用名称进行匹配解决这个问题. @Resouce和上述方法使用方式完全相同,但是它可以有两种注入方式 name 和 type两种类型,name的话可以通过名字来注入。并且这个是JRS提供的注解,Spring只是提供了集成作用。默认是通过反射机制进行name的注入。
public class EmployeeDao {
private static Map<Integer, Employee> employee = null;
@Autowired
private DepartmentDAO departmentDAO;
static{
employee = new HashMap<Integer,Employee>();
employee.put(1001,new Employee(1001,"AA","24541@qq.com",1,new Department(101,"教学部")));
employee.put(1002,new Employee(1002,"BB","24542@qq.com",1,new Department(102,"学习部")));
employee.put(1003,new Employee(1003,"DD","24543@qq.com",0,new Department(103,"市场部")));
employee.put(1004,new Employee(1004,"CC","24544@qq.com",0,new Department(103,"市场部")));
employee.put(1005,new Employee(1005,"EE","24545@qq.com",1,new Department(103,"市场部")));
}
//主键自己增加,增加一个员工
private static Integer initID = 1006;
public void save(Employee employees){
if(employees.getId()==null){
employees.setId(initID++);
}
employees.setDepartment(departmentDAO.getDepartmentById(employees.getDepartment().getId()));
employee.put(employees.getId(),employees);
}
//查询全部员工信息
public Collection<Employee> getAll(){
return employee.values();
}
public Employee getEmployeeById(int id){
return employee.get(id);
}
public void delete(Integer id){
employee.remove(id);
}
}
注意:我们这里将一下几个常用注解的功能
@bean处理方面的除了上面的@Autowired外还有一些管理的注解
- 1、@Component:这里泛指组件应用,可以使用这个注解或者一些公共方法
- 2、@Respository 常常用来标记到Dao类
- 3、@Service 服务层,也是常用来注解到Dao类
- 4、@Controller空着Bean 这里还有一个增强注解叫RestController
- 5、@Configuration 声明配置类一般在Config包下面,这其中还有一个@Scope一块使用的,声明生命周期和作用域的
Http相关的注解
- @GetMapping 从服务器上获取特定的资源
- @PostMapping 创建一个新资源
- @PutMapping 更新服务器上的资源
- @DeleteMapping 删除特定的资源
- @RequesMapping("网站路径之前常用这一类")
前后端参数的注解
- @RequestParam 用来请求表单中类型的 key=value格式的数据,表单格式
- @PathVariable 路径变量,参数与大括号里面的名字是一样的
- @RequestBody 获取请求body的数据,常用来@PostMapping请求来提交对象数据
- @ResponseBody 表示该方法的返回值直接写入body中,Json格式
读取配置
- @Value 直接读取各种资源名称的属性名字
- @ConfigurationProperties 读取配置信息并且与bean绑定一下
参数校验
这里注意的是需要自己导入一个validation包才能实现一些参数校验功能(常用的@min(value),@max(value),@Email(value),@Size),同时要搭配@Valid属性进行校验。
异常处理
其中常用的有两种@ControllerAdvice(定义全局异常处理类) 和 @ExceptionHandler(声明异常处理方法)
测试处理
- @Transactional 被声明的测试方法会出现回滚,避免污染数据
- @WithMockUser 用来模拟一个真实的用户场景,并且可以赋予权限
- @Test 测试类
配置启动
- @EnableAutoConfiguration 这个注解告诉SpringBoot根据添加的jar来自动装配注解
- @CondaitionalOn*****这里面的注解是指定或者配置文件
- @ConponentScan表示扫描那些包
@indexd spring5.0之后新加入的注解,该注解不需要每次都去扫描文件,而是在添加后直接将包中所有的@Controller注解的文件都打包成一个包从而提高运行的效率和时间。
@import注解实现第三方配置类的使用,他也是Enable***文件的一个基础,对于自动装配的使用有新的提高