把@component加在类上,则设置该类为spring管理的bean。@Component注解括号中如果不起名称,会有一个默认值就是当前类名首字母小写,所以也可以按照名称获取
@Configuration
@ComponentScan("要扫描的包路径")
public class SpringConfig {
}
// 例如
@Autowired
private BookDao bookDao;
@Autowired
@Qualifier("book")
private BookDao bookDao;
@Value("jjw")
private String name;
即相当于给name赋值一个默认值为jjw
在配置类的上边添加一个@PropertySource(“配置文件”) 则在此处的@Value(${“配置文件中的键”}) 就可以使用配置文件中的值了。例如:
@Configuration
@ComponentScan("要扫描的包路径")
@PropertySource("jdbc.properties")
public class SpringConfig {
}
@Value("${jdbc.properties中的属性的键}")
需要注意的是如果配置文件过多则用数组包括起来
管理第三方bean即在配置类中创建一个方法,此方法返回一个第三方的一个对象。在此方法的上边写上@Bean即将此对象封装成了bean对象。例如:
@Configuration
public class SpringConfig {
@Bean
public DataSource dataSource(){
DruidDataSource ds = new DruidDataSource();
ds.setDriverClassName("com.mysql.jdbc.Driver");
ds.setUrl("jdbc:mysql://localhost:3306/spring_db");
ds.setUsername("root");
ds.setPassword("root");
return ds;
}
}
或者将dataSource这个方法写到一个专门的类中,并在上边这个配置类中使用@Import({dataSource所在类的类名.class})导入即可。注意:
//设置类运行器
@RunWith(SpringJUnit4ClassRunner.class)
//设置Spring环境对应的配置类
@ContextConfiguration(classes = {SpringConfiguration.class}) //加载配置类
类型 测试类注解
位置 测试类定义上方
作用 设置JUnit运行器
属性 value(默认):运行所使用的运行期
类型 测试类注解
位置 测试类定义上方
作用 设置JUnit加载的Spring核心配置
属性 classes:核心配置类,可以使用数组的格式设定加载多个配置类
locations:配置文件,可以使用数组的格式设定加载多个配置文件名称
注意类的上边配置了上边两个内容后,类中的方法就可以就可以进行测试了
举例如下:
@Component
@Aspect
public class MyAdvice {
@Pointcut("execution(void com.itheima.dao.BookDao.update())")
private void pt(){}
@Before("pt()")
public void method(){
System.out.println(System.currentTimeMillis());
}
}
@Configuration
@ComponentScan("com.jjw")
@EnableAspectJAutoProxy
public class SpringConfig { }
类型 配置类注解
位置 配置类定义上方
作用 开启注解格式AOP功能
类型 类注解
位置 切面类定义上方
作用 设置当前类为AOP切面类
类型 方法注解
位置 切入点方法定义上方
作用 设置切入点方法
属性 value(默认):切入点表达式
类型 方法注解
位置 通知方法定义上方
作用 设置当前通知方法与切入点之间的绑定关系,当前通知方法在原始切入点方法前运行
@Around(“pt()”)
public void around(ProceedingJoinPoint pjp) throws Throwable{
System.out.println(“around before advice …”); // 前
pjp.proceed();
System.out.println(“around after advice …”); // 后
}
* :单个独立的任意符号,可以独立出现,也可以作为前缀或者后缀的匹配符出现
execution(public * com.jjw..UserService.find())
匹配返回值为任意类型的com.jjw包下的任意包中的UserService类或接口中所有find开头的带有一个参数的
方法
..
:多个连续的任意符号,可以独立出现,常用于简化包名与参数的书写
execution(public User com…UserService.findById(…))
匹配返回值为User对象的com包下的任意包中的UserService类或接口中所有名称为findById的参数任意个的方法
+:专用于匹配子类类型
execution( *…Service+.(…))
匹配返回值为任意类型下的所有以Service结尾的接口的子类,参数可以有任意多个。 这个使用率较低,描述子类的,咱们做JavaEE开发,继承机会就一次,使用都很慎重,所以很少
用它。*Service+,表示所有以Service结尾的接口的子类。
类型 方法注解
位置 通知方法定义上方
作用 设置当前通知方法与切入点之间的绑定关系,当前通知方法在原始切入点方法后运行
类型 方法注解
位置 通知方法定义上方
作用 设置当前通知方法与切入点之间绑定关系,当前通知方法在原始切入点方法正常执行完毕后
执行
类型 方法注解
位置 通知方法定义上方
作用 设置当前通知方法与切入点之间绑定关系,当前通知方法在原始切入点方法运行抛出异常后
执行
类型 方法注解
位置 通知方法定义上方
作用 设置当前通知方法与切入点之间的绑定关系,当前通知方法在原始切入点方法前后运行
可以写在接口类上、接口方法上、实现类上和实现类方法上
写在接口类上,该接口的所有实现类的所有方法都会有事务
写在接口方法上,该接口的所有实现类的该方法都会有事务
写在实现类上,该类中的所有方法都会有事务
写在实现类方法上,该方法上有事务
建议写在实现类或实现类的方法上
名称 @Transactional
类型 接口注解 类注解 方法注解
位置 业务层接口上方 业务层实现类上方 业务方法上方
作用 为当前业务层方法添加事务(如果设置在类或接口上方则类或接口中所有方法均添加事务)
类型 配置类注解
位置 配置类定义上方
作用 设置当前Spring环境中开启注解式事务支持
类型 类注解或方法注解
位置 SpringMVC控制器类或方法定义上方
作用 设置当前控制器方法请求访问路径
相关属性 value(默认),请求访问路径
类型 类注解或方法注解
位置 SpringMVC控制器类或方法定义上方
作用 设置当前控制器方法响应内容为当前返回值,无需解析即如果写在方法上,则将方法的返回内容作为响应体返回给前端
类型 形参注解
位置 SpringMVC控制器方法形参定义前面
作用 绑定请求参数与处理器方法形参间的关系,就是将前端请求的参数和后端接口传递的参数一一对应
相关参数 required:是否为必传参数
defaultValue:参数默认值
类型 配置类注解
位置 SpringMVC配置类定义上方
作用 开启SpringMVC多项辅助功能、比如前端传递进来的JSON格式数据
类型 形参注解
位置 SpringMVC控制器方法形参定义前面
作用 将请求中请求体所包含的数据传递给请求参数,此注解一个处理器方法只能使用一次。例如前端发送的为JSON格式的数据时用 @RequestBody对应的参数接收
类型 形参注解
位置 SpringMVC控制器方法形参前面
作用 设定日期时间型数据格式
相关属性 pattern:指定日期时间格式字符串例如:前端传递的为2020/02/08 则后端接收的应为@DateTimeFormat(pattern=“yyyy/MM/dd”) Date date,若前端传递的为 2021-02-02 9:09:09则后端接收的应为@DateTimeFormat(pattern=“yyyy-MM-dd HH:mm:ss”) Date date.
类型 形参注解
位置 SpringMVC控制器方法形参定义前面
作用 绑定路径参数与处理器方法形参间的关系,要求路径参数名与形参名一一对应
类型 类注解
位置 基于SpringMVC的RESTful开发控制器类定义上方
作用 设置当前控制器类为RESTful风格,
等同于@Controller与@ResponseBody两个注解组合功能
类型 方法注解
位置 基于SpringMVC的RESTful开发控制器方法定义上方
作用 设置当前控制器方法请求访问路径与请求动作,每种对应一个请求动作,
例如@GetMapping对应GET请求
相关属性 value(默认):请求访问路径
类型 类注解
位置 Rest风格开发的控制器增强类定义上方
作用 为Rest风格开发的控制器类做增强
说明:此注解自带@ResponseBody注解与@Component注解,具备对应的功能
类型 方法注解
位置 专用于异常处理的控制器方法上方
作用 设置指定异常的处理方案,功能等同于控制器方法,
出现异常后终止原始控制器执行,并转入当前方法执行
说明:此类方法可以根据处理的异常不同,制作多个方法分别处理对应的异常
SpringBoot启动依赖
SpringBoot 在创建项目时,采用jar的打包方式
SpringBoot 的引导类是项目的入口,运行 main 方法就可以启动项目
因为我们在 pom.xml 中配置了 spring-boot-starter-web 依赖,而该依赖通过前面的学习知道它依赖 tomcat ,所以运行 main 方法就可以使用 tomcat 启动咱们的工程。
原因是 Mybatis 会扫描接口并创建接口的代码对象交给 Spring 管理,但是现在并没有告诉 Mybatis 哪个是 dao 接口。而我们要解决这个问题需要在 BookDao 接口上使用 @Mapper
@Setter:为模型类的属性提供setter方法
@Getter:为模型类的属性提供getter方法
@ToString:为模型类的属性提供toString方法
@EqualsAndHashCode:为模型类的属性提供equals和hashcode方法
@Data:是个组合注解,包含上面的注解的功能
@NoArgsConstructor:提供一个无参构造函数
@AllArgsConstructor:提供一个包含所有参数的构造函数
类型 属性注解
位置 模型类属性定义上方
作用 设置当前属性对应的数据库表中的字段关系
相关属性:value(默认):设置数据库表字段名称
exist:设置属性在数据库表字段中是否存在,默认为true,此属性不能与value合并使用
select:设置属性是否参与查询,此属性与select()映射配置不冲突
类型 类注解
位置 模型类定义上方
作用 设置当前类对应于数据库表关系
相关属性 value(默认):value值要设置为数据库对应的表的名称
类型 属性注解
位置 模型类中用于表示主键的属性定义上方
作用 设置当前类中主键属性的生成策略
相关属性 value(默认):设置数据库表主键名称
type:设置主键属性的生成策略,值查照IdType的枚举值
类型 属性注解
位置 模型类中用于表示删除字段的属性定义上方
作用 标识该字段为进行逻辑删除的字段
相关属性 value:逻辑未删除值
delval: 逻辑删除值
负载均衡注解
在@Value注入的变量所在类上添加注解@RefreshScope
在启动类上添加注解开启Feign的功能
服务名称:userservice
获取请求头参数