目录
2、SSM相关注解
-
实例化Bean对象的注解
- @Component(“id名可省略”):对类进行实例化,不分层。不配置id名则默认为类名
- @Controller:用在控制层上,实例化对象
- @Service:用在service层上实例化对象
- @Repository:用在dao层上实例化对象
-
注入Bean
-
@Autowired(required=false):用于属性上或者set方法(set可以省略)上,表示注入一个对象
- required为false时可以为null,可省略,当同一类有两个以上对象时,配合Qualifier使用
- 在含参的构造方法中使用,加到参数前(@Autowired Person p)
-
@Primary:配合Autowired使用,当有多个实现类时,在类上加此注解会告诉IoC容器优先注入此类。但是当两个实现类都加上Primary注解时,还是会出错,它只能解决首要性问题,而非选择性问题。
-
@Qualifier(value=“名”):结合Autowired(默认为按类注入)使用,它会变成根据名字依赖注入,可以消除Primary注解的问题
-
@Resource(name=“”):相当于@Autowired+@Qualifier同时使用(jdk中没有,需要导javax.annotation包)
-
@Value:给普通的属性进行赋值,无法注入对象
- @Value(“”) 直接给属性赋值
- @Value(“${key}”) 可以根据键获取.properties配置文件中的值
-
-
配置相关(用于取代XML文件配置)
- @Configuration:指定当前类为一个Spring核心配置类,创建容器时从该类加载注解
- 代替.xml文件
- @ComponentScan(“”):指定Spring在初始化容器时要扫描的包
- 替代xml文件中的<context:component-scan base-package=“com.***”/>
- 如果()不指定路径,则必须和被扫描的类同包,默认是当前包的路径
- 两个参数
- basePackages={“包路径1,包路径2…”},扫描的是指定包下的所有类,优先使用
- basePackageClasses={类1.class,类2.class…},扫描的是指定的类,需要大量重构的项目中使用
- @Bean(“”):用在方法上,标注将该方法的返回对象储存到IoC容器中,作为一个Bean
- 不设置时方法名相当于xml文件bean标签的id值,()内设置后为设置的值
- 方法的返回值相当于xml文件bean标签的class属性
- 三个属性
- name=“”:名,可指定多个
- initMethod=“”:自定义初始化方法
- destroyMethod=“”:自定义销毁方法
- @PropertySource(“classpath:文件名”):加载.properties文件中的配置
- 属性
- name:名称
- value:{“classpath:文件名”,…}
- ignoreResourceNotFound:默认为false,如果找不到文件是否忽略,不设置,找不到会抛出异常
- encoding:编码
- 属性
- @Import({1.class,2.class,…}):导入其他的配置类
- @ImportResource({“classpath:applicationContext.xml”,…}):导入xml配置文件
- @Configuration:指定当前类为一个Spring核心配置类,创建容器时从该类加载注解
-
配置开发环境
- @Profile(“”):根据不同的环境注入不同的对象,配置了profile注解时,使用需要选择激活
- dev:开发环境、test:测试环境、master:生产环境
- @Profile(“”):根据不同的环境注入不同的对象,配置了profile注解时,使用需要选择激活
-
AOP相关
- @Aspect:声明类为一个切面
- @After:用在方法上,使方法成为后置通知
- @Before:用在方法上,使方法成为前置通知
- @Around:用在方法上,使方法成为环绕通知
- @PointCut:声明为一个切点
-
Enable相关注解:内部都包含@Import注解,主要是用来自动导入***配置,并开启对其的支持
- @EnableAspectJAutoProxy:用在配置类上,开启Spring对AspectJ的支持
- @EnableAsync:开启异步方法支持
- @EnableScheduling:开启计划任务支持
- @EnableWebMvc:开启Web MCV支持
- @EnableConfigurationProperties:开启对@ConfigurationProperties注解配置Bean的支持。
- @EnableJpaRepositories:开启对Spring Data JPA Repostory(持久化数据的框架。)的支持。
- @EnableTransactionManagement:开启注解式事务的支持。
- @EnableCaching:开启注解式的缓存支持
-
作用域
- @Scope:标注对象的作用范围,用在实例化的bean下
- @Scope不写时,默认值为singleton单例模式
- @Scope(“prototype”) 换为多例模式
- @Scope:标注对象的作用范围,用在实例化的bean下
-
初始方法和销毁方法(需要导javax.annotation包)
- @PostConstruct:标注 方法为初始化方法
- @PerDestroy::标注方法为销毁方法
-
SpringMVC相关注解
-
@RequestMapping(“访问路径”):映射一个url到控制器的一个特定方法,通过此路径调用相应方法
- 用在类上:类中的方法都会生效,路径为(类+方法)
-
用在方法上:和用在类上的组成一个完整的路径
-
PostMapping():只处理post提交的请求
-
GetMapping():只处理get提交的请求
-
@RequestParam(“”):用于方法的参数前,用来处理前端提交数据名和方法参数名相匹配的问题
http://localhost:8080/user?id=1
-
@ResponseBody:用在方法上,是使方法不再走视图解析器,而是返回字符串数据,通常位JSON。.
-
@RequestBody:注解用于接收前端传来的实体,自动装配到对象中
@PostMapping("/user") public String testRequestBody(@RequestBody User user) { System.out.println("获取到的username为:"+ user.getUsername()); System.out.println("获取到的password为:"+user.getPassword()); return "success"; }
-
@PathVariable:用来获取 URL 参数,处理Restfull 风格
// 路径:http://localhost:8080/user/{id} @GetMapping("/user/{id}") public String testPathvariable(@PathVariable(value="id") Integer id) { //value可解决名字不匹配 System.out.println("获取到的id为:"+id); return "success"; }
-
RestController:相当于@Controller+ResponseBody
-
-
mybatis注解
-
Mapper包的扫描:有三种方式
- @Mapper注解:在Mapper接口上添加,就可以不用使用XML文件
- @MapperScan({“包1”,“包2”……}):用在核心配置类上,用来扫描mapper接口所在包,可以扫描多个包。不同每个接口都添加@Mapper了
- 通过配置MapperScannerConfigurer扫描
-
增删改查
- @Insert(“SQL语句”):新增
- @Delete(“SQL语句”):删除
- @Update(“SQL语句”):更新
- @Select (“SQL语句”):查询
-
复杂关系映射:实现复杂关系映射之前我们可以在映射文件中通过配置
<resultMap>
来实现,在使用注解开发时我们需要借助@Results 注解,@Result 注解,@One 注解,@Many 注解。-
@Results:与@Result 一起使用,封装多个结果集,@Results({@Result(),@Result()})
-
@Result :结果集封装,代替了
<id>
标签和<result>
标签@Result 中的属性 介绍 id 是否是主键字段 column 数据库的列名 property 需要装配的属性名 one 需要使用的@One 注解(@Result(one=@One)())) many 需要使用的@Many 注解(@Result(many=@many)())) -
@ResultMap:引用@Results 定义的封装
-
@One:一对一结果集封装,代替了
<assocation>
标签,是多表查询的关键,在注解中用来指定子查询返回单一对象。@Result(column=" “,property=”“,one=@One(select=”")) -
@Many:一对多结果集封装,代替了
<collection>
标签,是是多表查询的关键,在注解中用来指定子查询返回对象集合。@Result(property=“”,column=“”,many=@Many(select=“”))
-
-
@SelectProvider(type=xxxx.class,method=”xxxx”):反射一个自定义的类,使用类中的方法构造SQL语句。这个类可以使用方法返回SQL语句,添加SelectProvider后就能映射到自定义的类,还能用来拼接动态sql
-
@CacheNamespace:用于Mapper上,是用来实现二级缓存的
-
@Param(value=“id”):用来方法传递的参数上,解决参数名字不匹配的问题
-