1. Spring基础
Spring框架本身有四大原则:
- 使用POJO进行轻量级和最小侵入式开发
- 通过依赖注入和基于接口编程实现松耦合
- 通过AOP和默认习惯进行声明式编程
- 通过AOP和模板(template)减少模式化代码
1.1 依赖注入
声明Bean的注解,以下四种注解是等效的,根据需要使用。
@component //组件,没有明确角色
@Service //在业务逻辑层(service层)使用
@Repository //在数据访问层(dao层)使用
@Controller //在展现层(Spring MVC)使用
注入Bean的注解
@Autowire //Spring提供的注解
@Inject //JSR-330提供的注解
@Resource //JSR-250提供的注解
Java配置
@configuration //声明为配置类
@ComponentScan //自动扫描包名下所有声明为Bean的类
@EnableAspectJAutoProxy //开启Spring对AspectJ的支持
@Bean //注解在方法上,声明当前方法的返回值为一个Bean
1.2 AOP
@Aspect //声明为切面
@PointCut //切点,定义拦截规则
//声明一个advice
@After
@Before
@Around
2. Spring常用配置
@scope //常用的包括Singleton、Prototype、Request、Session,默认为Singleton
@Profile //为不同环境下使用不同的配置提供支持,如开发环境、生产环境
Spring EL
@Value //Spring EL表达式的注入,包括字符、URL、普通文件、配置文件等
Bean的初始化和销毁
@PostConstruct //在构造函数执行完后执行
@PreDestroy //在Bean销毁之前执行
3.Spring高级话题
多线程
@EnableAsync //在配置类中开启对异步任务的支持
@Async //在Bean的方法中声明其是一个异步任务
计划任务
@EnableScheduling //在配置类中开启对计划任务的支持
@Scheduled //在Bean的方法上声明一个计划任务,支持cron、fixedDelay、fixedRate等
条件注解
@Conditional
@Enable*注解
@EnableAspectJAutoProxy //开启对AspectJ自动代理支持
@EnableAsync //开启异步方法支持
@EnableScheduling //开启计划任务支持
@EnableWebMVC //开启Web MVC的配置支持
@EnableConfigurationProperties //开启对@ConfigurationProperties注解配置Bean的支持
@EnableJpaRepositories //开启对Spring Data JPA Repository的支持
@EnableTrasactionManagement //开启注解式事务支持
@EnableCache //开启注解式的缓存支持
测试
@ContextConfiguration //用来加载配置ApplicationContext
@ActiveProfile //用来声明活动的profile
org.springframework.boot.autoconfigure.condition包下是注入动作是否执行的判断注解,常用的几个如下,其他的可以自己看下,比较简单的英文:
- ConditionalOnClass:类或者方法级别注解,当classpath中有指定的class的时候,才会执行spring注入动作
- ConditionalOnProperty:类或者方法级别注解,项目环境(比如application.properties)中有指定的配置值的时候,才会执行spring注入动作
- ConditionalOnMissingBean:类或者方法级别注解,当某个bean在spring上下文中无实例的时候,才会执行spring注入动作,注意该注解无法保证bean的加载顺序,一般和AutoConfigureAfter或者AutoConfigureBefore混用,保证该bean在最后一个执行注入
- ConditionalOnExpression:类或者方法界别注解,当某个条件成立的时候,比如@ConditionalOnExpression("'${test.name}'.startsWith('hello')"),则表示环境变量中包含test.name的值,且以hello开头,才会执行spring注入动作
org.springframework.boot.autoconfigure包下:
- AutoConfigureAfter:类级别的注解,在指定的bean注入后,才会被执行注入动作
- AutoConfigureBefore:类级别的注解,该bean被执行注入动作后,指定的bean才会被注入
4. Spring MVC
常用注解
@Controller //声明为Spring MVC里的Controller
@RequestMapping //映射Web请求、处理类和方法
@ResposeBody //支持将返回值放在response体内,而不是返回一个页面
@RequestBody //允许request参数在request体内,而不是直接链接在地址后面
@PathVariable //用来接收路径参数
@RestController //是@Controller和@ResposeBody 的组合注解