自动装配


  • @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