0
点赞
收藏
分享

微信扫一扫

第100+7步 ChatGPT文献复现:ARIMA-GRNN预测出血热

小_北_爸 2024-05-15 阅读 5

前言

1.组件扫描和声明相关的注解

@Component:通用组件注解表明是受spring管理的组件。

     三个Component的按三层架构分类的三个衍生注解(功能完全相同):

        @Controller:控制层

        @Service:业务层

        @Repository:数据层

2.依赖注入相关注解

@Autowried:按类型自动装配bean,底层使用了暴力反射,没有setter方法也可以注入

        @Qualifier:配合Autowried使用,如果多个该类型的bean,使用该注解声明名称注入

        @Primary:配合AutoWried使用,如果多个该类型的bean,声明本注解的bean为主要的bean

@Resource:自动装配,按照名称注入,名称不存在按照类型注入
下面说说二者之间的差异:

        实现方式不同:上述已经讲解注入的类型

        兼容性:

  • @Autowired:是 Spring 提供的注解,依赖于 Spring 框架,对 Java EE 平台没有依赖。
  • @Resource:是 Java EE 规范提供的注解,在 Java EE 平台上具有更好的兼容性,但也可以在 Spring 中使用。

3.配置相关注解

@Configuration:定义该类是一个配置类,代替了xml的配置文件。

@Bean:用于管理第三方bean,主要用于将第三方库或外部组件集成到 Spring 应用程序中。

@ComponentScan:扫描@Component配置的bean,扫描到了就注册到Ioc容器,参数为扫描路径。
@Import:实现组件化开发,用来在 Spring 配置类中引入其他配置类或普通类,并将其中声明的 Bean 导入到当前配置类中。
@EnableAspectJAutoProxy:告诉 Spring 启用基于注解的 AOP 支持

@Conditional:可以根据条件动态地决定某个 Bean 是否被创建,从而实现配置的灵活性。
@Lazy:  声明bean是否延时加载。1.在配置类注解上配置类中所有的 @Bean 方法,2.在@Bean方法上,表示第三方延时加载,3.在@Compoent组件上,表明该组件是一个延时加载bean

        延时加载bean:bean的延时加载就是使用到bean的时候再去加载

        非延时加载bean:在 Spring 容器启动时会立即进行实例化和初始化,无论是否在应用中被使用。这意味着当 Spring 容器启动时,非延迟加载的 Bean 将被创建,并准备好在需要时立即使用。
@PropertySource

  • 用于指定外部属性文件的位置。
  • 可以通过 value 属性指定属性文件的路径。
  • 在属性文件中定义的属性可以通过 @Value 注解注入到 Bean 的属性中。

4.配置注入相关的注解 

@Value: 注入属性值,通常从配置文件中读取。 

5.Aop相关的注解、

 作用:在不惊动原始设计的基础上做功能增强。这就是spring的无侵入式编程。

  1. @Aspect: 声明一个切面。
  2. @Pointcut: 定义一个切入点。
    @Pointcut("execution(* com.example.UserService.*(..))")定义一个切入点表达式
  3. @Before: 在方法执行前执行通知。
  4. @AfterReturning: 在方法执行后返回结果后执行通知。
  5. @AfterThrowing: 在方法抛出异常后执行通知。
  6. @Around: 包围一个方法的通知

         这个是五大通知中最重要的方法,可以动态的声明在方法执行前还是执行后
 

public Object around(ProceedingJoinPoint pjp) throws Throwable {
    System.out.println("环绕通知前");
    Object ret = pjp.proceed();
    System.out.println("环绕通知后");
    return ret;
}

 AOP的主要原理:

动态代理,获取bean是代理对象的时候,会根据代理对象的运行模式,运行原始方法与增加的内容完成操作。

6.Web相关注解: 

  • @Controller: 标识一个类为MVC控制器。
  • @RequestMapping: 映射HTTP请求到处理方法。
  • @ResponseBody: 将方法的返回值直接写入HTTP响应体中。
  • @PathVariable: 获取请求路径中的参数值。
  • @RequestParam: 获取请求参数的值。
  • @ResponseStatus: 设置HTTP响应的状态码和原因

7.事务相关的注解 

  • @Transactional: 声明一个方法或类为事务性操作。
     
  • @EnableTransactionManagement: 启用 Spring 的事务管理功能。
     
  • @ReadOnly: 声明一个方法是只读的,即不会修改数据库中的数据,可用于优化性能。
     
  • @Propagation: 用于定义事务的传播行为,包括 REQUIREDSUPPORTSMANDATORYREQUIRES_NEWNOT_SUPPORTEDNEVER 和 NESTED
  • @Propagation.REQUIRED: 指定方法必须在一个事务中执行,如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。
  • @Propagation.REQUIRES_NEW: 指定方法必须在一个新的事务中执行,如果当前存在事务,则挂起该事务。

总结

举报

相关推荐

0 条评论