自动装配
- @Autowired 可以通过对象的类型来自动加载某个类
- @Qualifier 经常与@Autowired一起使用,通过具体名字来自动装配
- @Resource 有两个属性:name和type,默认是按照byName注入,相当于前两个整合
前面三个注解针对于bean类型的数据,基本类型和String类型无法实现,因此有了@value注解
- @value value属性用于指定数据的值,可以用 ${表达式} 的写法
三层架构注解
- @Controller 控制层 handler处理器
- @Service 服务层
- @Repository 持久层,DAO层
- @Component 在确定不了是哪一个层的时候使用
Spring会把这四个注解当作需要注入的Bean加载在上下文中
参数传递
- @RequestMapping 这个注解可以作用在方法上,用来指定请求路径。
- @RequestBody 用在控制层的方法上,可以将前端传回来的json转换为java对象
- @ResponseBody 用在控制层方法上,可以将方法返回的Java对象转为json数据传到前端
这些注解作用于类上,该类的所有方法都适用。 - @RestController 用在类上,相当于@Controller+@ResponseBody
Application
- @MapperScan 用来扫描指定包内的所有mapper
- @SpringBootApplication 是 Spring Boot 最核心、最基础的注解。
配置Bean
- @Configuration 用于定义配置类,可以替换xml配置文件。该配置可以省略,加上该注解,获得的类对象默认为单例
- @Bean 在@Configuration注解下进行创建,在方法上使用@Bean就表明这个方法需要交给Spring进行管理
- @Scope 设置Bean的作用域。
- singleton 单例模式,bean的默认作用域,单例模式对于无会话状态的bean(DAO、service)来说,是最理想的选择
- prototype 原型模式,对需要保持会话状态的bean应该使用prototype
- request 该作用域仅在当前 HTTP Request 内有效
- session 该作用域仅在当前 HTTP Session 内有效
- application bean对象的定义范围在ServletContext生命周期内。仅仅在web-aware的上下文中有效
- websocket bean对象的定义为WebSocket的生命周期内。仅仅在web-aware的上下文中有效
- @PostConstruct 注解在方法上,表示该方法是在Spring实例化该Bean之后马上执行此方法。一个Bean中@PostConstruct注解的方法可以有多个
- @PreDestory 容器销毁前执行该方法
整合单元测试
不用启动项目就可以进行测试
需要先添加junit依赖
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
@RunWith(SpringJUnit4ClassRunner.class),创建容器
@ContextConfiguration("classpath:xxx.xml"),加载配置文件
@Test,测试方法
面向切面编程-通知
@Aspect 把当前类标识为一个切面供容器进行读取
- @before(前置通知)通知方法在目标方法调用之前执行
- @after(后置通知)通知方法在目标方法返回或异常后调用
- @after-returning(返回后通知)通知方法会在目标方法返回后调用
- @after-throwing(抛出异常通知)通知方法会在目标方法抛出异常后调用
- @around(环绕通知) 通知方法会将目标方法封装起来
注解事务
首先要在配置文件中开启注解事务
<tx:annotation-driven transaction-manager="transactionManager" />
@Transactional添加在接口实现类或接口实现方法上,而不是接口类中。只有public的方法才起作用
注解实现定时器
@EnableScheduling加在Application类上
@Scheduled加在需要使用定时器的方法上
别名
@Alias