spring

72 阅读3分钟

spring

通过@Component, @Repository , @Controller , @Service 标识,注册给 ioc 容器来管理对象的生命周期时。

@Bean 或 @Import

来把三方 class 注册 (导入) 给 Ioc 容器了。

@Bean

  • @Bean 就放在方法上,Spring 的 @Bean 注解用于告诉方法,产生一个 Bean 对象,然后这个 Bean 对象交给 Spring 管理。

  • @Bean 注解的另一个好处就是能够动态获取一个 Bean 对象,能够根据配置参数在方法的实现给出不同的 Bean 对象。

  • 标识了 @Bean 注解的方法,Spring 只会调用一次,随后这个 Spring 将会将这个 Bean 对象放在自己的 IOC 容器中。

  • @Bean 注解在返回实例的方法上,如果未通过 @Bean 指定 bean 的名称,则默认与标注的方法名相同。

  • @Bean 注解默认作用域为单例 singleton 作用域,可通过 @Scope (“prototype”) 设置为原型作用域。

  • @Bean 注解注册 bean, 同时可以指定初始化和销毁方法,如 @Bean (name="testBean",initMethod="start",destroyMethod="cleanUp")。

@import

@Import 只能用在类上 ,@Import 通过快速导入的方式实现把实例加入 spring 的 IOC 容器中。

my.oschina.net/seanxm/blog…

spring的注入方式

set方法注入

构造方法注入

成员变量注入

 

 

@Autowired

作用范围:构造器、成员变量、方法、参数、注解

@Autowired注解的required参数默认是true,表示开启自动装配

加上@Qualifier按名称装配

@Autowired会自动把相同类型的对象收集到集合中。

@Resource能用在:类、成员变量和方法上。

@Autowired是spring定义的注解,而@Resource是JSR-250定义的注解

 

 

@Resource

默认按名称自动装配

 

@PostConstruct

相当于init-method,使用在方法上,当Bean初始化时执行。

@PreDestroy

相当于destory-method,使用在方法上,当Bean销毁时执行。

 

 

Spring-boot

 

@PropertySource

@PropertySource注解用于指定资源文件读取的位置,它不仅能读取properties文件,也能读取xml文件,并且通过YAML解析器,配合自定义PropertySourceFactory实现解析YAML文件。

 

blog.csdn.net/qq_40837310…

 

 

@ConfigurationProperties

blog.csdn.net/yusimiao/ar…allfirst_rank_ecpm_v1~hot_rank-1-97622666.pc_search_result_con trol_group&utm_term=%40ConfigurationProperties&spm=1018.2226.3001.4187

 

@Scheduled

@Scheduled注解是Spring Boot提供的用于定时任务控制的注解,需要配合@EnableScheduling使用

zhuanlan.zhihu.com/p/103994119

@ResponseBodyAdvice

www.cnblogs.com/Naylor/p/13…

 

@ExceptionHandler

https://blog.csdn.net/lkforce/article/details/98494922?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163756983616780357233481%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=163756983616780357233481&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-98494922.pc_search_result_control_group&utm_term=%40ExceptionHandler&spm=1018.2226.3001.4187

 

@InitBinder

应用到所有的@RequestMapping注解方法,在其执行前初始化数据绑定器

 

@ModelAttribute

设置属性,属性值绑定到Model中,使全局@RequestMapping可以获得该值

 

@Transactional

Spring的声明式事务就是采用声明的方式来处理事务,用在Spring配置文件中声明式的处理事务来代替代码式的处理事务。

  默认配置下,spring 只有在抛出的异常为运行时 unchecked 异常时才回滚该事务,也就是抛出的异常为RuntimeException 的子类(Errors也会导致事务回滚),而抛出 checked 异常则不会导致事务回滚 。可通过 @Transactional rollbackFor进行配置。

声明式事务管理建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。

@Transactional 实质是使用了 JDBC 的事务来进行事务控制的

@Transactional 基于 Spring 的动态代理的机制

spring 所有的事务管理策略类都继承自 org.springframework.transaction.PlatformTransactionManager 接口

image.png

1. value :主要用来指定不同的事务管理器;
   主要用来满足在同一个系统中,存在不同的事务管理器。
   比如在Spring中,声明了两种事务管理器txManager1, txManager2.然后,
   用户可以根据这个参数来根据需要指定特定的txManager.
 
2. value 适用场景:在一个系统中,需要访问多个数据源或者多个数据库,
   则必然会配置多个事务管理器的

image.png

image.png

image.png

image.png