【JAVA】part4-Java注解

请添加图片描述

注解

注解,简单来说就是放在Java源码的类、方法、字段、参数前的一种特殊“注释”,发挥着其功能。

注解使得Java Web开发变得更加模块化和可配置,同时减少了XML配置的需要,对于简化开发流程和提高开发效率有着重要的作用。

1. Servlet配置

在Java EE 6之前,servlet需要在web.xml中配置。从Java EE 6和Servlet 3.0规范开始,可以使用注解来配置servlet,简化了配置。

  • @WebServlet: 用来声明一个servlet并指定其URL模式。
  • @WebFilter: 用来创建一个过滤器(Filter)。
  • @WebListener: 用来定义一个监听器(Listener)。

使用这些注解可以避免繁琐的XML配置,并使得应用程序的部署更加灵活。

@WebServlet(urlPatterns = "/example")
public class ExampleServlet extends HttpServlet {
    // Servlet代码
}

@WebFilter(urlPatterns = "/*")
public class ExampleFilter implements Filter {
    // Filter代码
}

@WebListener
public class ExampleListener implements ServletContextListener {
    // Listener代码
}

2. 控制器和请求映射

在Spring MVC和其他类似框架中,注解用于将HTTP请求映射到具体的处理方法。

  • @Controller / @RestController: 标记类是一个Web控制器,这些类的方法可以处理HTTP请求。
  • @RequestMapping: 用于将HTTP请求映射到控制器的方法。也有具体的变体如 @GetMapping, @PostMapping, @PutMapping, 等。
  • @PathVariable: 绑定URL模板变量值到方法的参数。
  • @RequestParam: 绑定请求参数到方法的参数。
@Controller
@RequestMapping("/example")
public class ExampleController {
    @GetMapping("/path")
    public String handleGetRequest() {
        // 处理GET请求的代码
        return "view";
    }

    @PostMapping("/path")
    public void handlePostRequest(@RequestBody RequestData requestData) {
        // 处理POST请求的代码
    }
}

3. 请求和响应体的处理

用于处理HTTP请求和响应体的内容。

  • @RequestBody: 用于将HTTP请求体绑定到方法的参数,通常用于POST或PUT请求。
  • @ResponseBody: 用于将方法的返回值作为HTTP响应体返回,通常用于RESTful Web服务。
@PostMapping("/path")
public void handlePostRequest(@RequestBody RequestData requestData) {
    // 处理包含请求体的POST请求的代码
}

@GetMapping("/path")
@ResponseBody
public ResponseData handleGetRequest() {
    // 处理GET请求并返回响应体的代码
    return new ResponseData();
}

4. 参数和配置注入

允许配置和依赖注入。

  • @Autowired / @Inject: 自动注入所需的依赖。
  • @Value: 用于注入配置属性。
  • @Configuration: 标记一个类作为配置定义。
  • @Bean: 在配置类中,标记一个方法用于返回一个Bean实例。
@Component
public class ExampleComponent {
    @Value("${my.property}")
    private String myProperty;

    @Autowired
    private AnotherComponent anotherComponent;

    // 其他代码
}

@Configuration
public class ExampleConfig {
    @Bean
    public ExampleBean exampleBean() {
        return new ExampleBean();
    }
}

5. 数据持久化

在JPA(Java Persistence API)和Hibernate等ORM框架中,注解用于将Java对象映射到数据库表。

  • @Entity: 标记一个类作为实体Bean。
  • @Table: 指定实体Bean映射到的数据库表。
  • @Id: 标记一个字段作为实体Bean的唯一标识。
  • @GeneratedValue: 配置主键的生成策略。
  • @Column: 指定一个字段映射到数据库表的列。
@Entity
@Table(name = "example")
public class ExampleEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "name")
    private String name;

    // 其他字段和方法
}

6. 事务管理

在Spring等框架中,注解用于声明式事务管理。

  • @Transactional: 管理方法或类上的事务边界。
@Service
@Transactional
public class ExampleService {
    // 事务管理的代码
}

7. 安全性

用于控制访问权限和认证。

  • @Secured / @RolesAllowed: 定义方法的安全访问约束。
  • @PreAuthorize / @PostAuthorize: 定义方法调用前后的安全表达式。
@Controller
public class ExampleController {
    @GetMapping("/admin")
    @Secured("ROLE_ADMIN")
    public String adminPage() {
        // 只有具有 ROLE_ADMIN 角色的用户可以访问该页面
        return "admin";
    }

    @GetMapping("/user")
    @PreAuthorize("hasRole('ROLE_USER')")
    public String userPage() {
        // 只有具有 ROLE_USER 角色的用户可以访问该页面
        return "user";
    }
}

8. 验证

Bean Validation API 使用注解来声明如何验证JavaBean的属性。

  • @NotNull, @Min, @Max, @Size, 等:用于在对象上声明验证规则。
public class ExampleBean {
    @NotNull
    @Size(min = 5, max = 10)
    private String name;

    // 其他字段和方法
}
  • 48
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值