Spring4.x注解详

Spring框架本身的四大原则

  • 使用POJO进行轻量级和最小侵入式开发
  • 通过依赖注入和基于接口编程实现松耦合
  • 通过AOP和默认习惯进行声明式编程
  • 使用AOP和模板(template)减少模块化代码

声明Bean的注解

  • @Component组件,没有明确的角色
  • @Service在业务逻辑层使用
  • @Repository在数据访问层使用
  • @Controller在表现层使用

注入bean的注解:可以注解在set方法上或者属性上

  • @Autowired:Spring提供的注解

  • @Inject:JSR-330提供的注解

  • @Resource:JSR-250提供的注解

  • 使用@Configuration声明当前类是一个配置类

  • 使用@ComponentScan,自动扫描包名下所有使用声明bean的类,并注册为Bean

JAVA配置(Spring 4.x推荐)

  • @Configuration声明当前类是一个配置类,相当于一个Spring配置的xml文件
  • @Bean注解在方法上,声明当前方法的返回值为一个Bean,bean的名称是方法名

AOP注解

  • 通过@Aspect注解声明一个切面
  • 通过@Component让此切面成为Spring容器管理的Bean
  • 通过@PointCut注解声明切点
  • 通过@After注解声明一个建言,并使用@PointCut定义的切点
  • 通过@Before注解声明一个建言,此检验直接使用拦截规则作为参数
  • 使用@EnableAspectJAutoProxy注解开启SPring对AspectJ的支持

@Value

  • 注入普通字符 @Value(“I love you”)
  • 注入操作系统属性 @Value("#{systemProperties[‘os.name’]}")
  • 注入表达式运算结果 @Value("#{T(java.lang.Math).random()*100.0}")
  • 注入其他Bean的属性@Value(#{demoService.another})
  • 注入文件内容 @Value(“classpath:com/wisely/test.txt”)
  • 注入网址内容 @Value(“http://www.baidu.com”)
  • 注入属性文件 @Value("${book.name}")
  • 注入配置文件需使用@PropertySource指定文件地址,若使用@Value注入,则需要配置一个PropertySourcesPlaceholderConfigurer的Bean

事件

Spring的事件需要遵循如下流程;

  • 自定义事件,继承ApplicationEvent
  • 定义事件监听器,实现ApplicationListener
  • 使用容器发布事件

多线程

  • 使用@EnableAsync注解开启异步任务支持
  • 配置类实现AsyncConfigurer接口并重写getAsyncExecutor方法,并返回一个ThreadPoolTaskExecutor,这样就获得了一个基于线程池TaskExecutor
  • 通过@Async注解表明该方法是个异步方法,如果注解在类级别,表明该类所有的方法都是异步方法。

计划任务:

  • 通过配置类@EnableScheduling来开启对计划任务的支持
  • 然后在要执行计划任务的方法上注解@Scheduled声明这是一个计划任务
  • @Scheduled支持多种类型的计划任务,包含cron、fixDelay,fixRate等
    组合注解与元注解:
  • 使用@WiselyCOnfiguration组合注解替代@Configuration和@ComponentScan
发布了33 篇原创文章 · 获赞 10 · 访问量 2063

猜你喜欢

转载自blog.csdn.net/qq_33670157/article/details/104569290