文章简介
- 注解
参考文章:https://www.cnblogs.com/wangbin2188/p/9014400.html - 注解记忆总结
注解
- 常用注解
1.常用的:
Springmvc的常用注解:@requestmapping()
@responseBody()
@pathvariable()
@paramVariable()
@postConstruct():在构造方法后,初化前执行
控制层:@RequestMapping(value="/hello")
@InitBind
事务:@Transational
各层:@Component 指定把一个对象加入IOC容器
@Reponsitory
@Service(有spring的和dubbox两个)
@Conrroller
@Resource 属性注入
@Autowired :属性注入(按类型注入)
@Value:为属性注入的值
@Scope:指定对象作用域,有单例singleton,多例protoType等
生命周期相关: 在方法上使用@PostConstruct,与原来的init-method等效。在方法上使用@PreDestroy,与destroy-method等效。
替代的是applicationContext.xml:@Configuration
测试:@Test
@RunWith(SpringJUnit4ClassRunner.class):用于指定运行环境
@ContextConfiguration(locations=“”):用于指定配置文件位置
注意:①需要在类上使用注解@Component,该注解的value属性用于指定该bean的id值。(@Repository, @Service, @Conrroller
②在业务控制方法中写入模型变量收集参数,且使用@InitBind来解决字符串转日期类型
③按名称注入域属性@Autowired与@Qualifier
④注意@requestmapping(value={"/","/index"})表示什么意思
在springmvc中 @RequestMapping(value={"", "/"})是什么意思?
这个意思是说请求路径 可以为空或者/
我给你举个例子:比如百度知道的个人中心 访问路径是
http://zhidao.baidu.com/ihome,当然你也可以通过 http://zhidao.baidu.com/ihome/来访问。我再举个例子 比如你在
在springmvc中 配置 @RequestMapping(value={"test", "test1"})
如果你项目端口是8080;然后你要访问这个方法,
你可以通过 http://localhost:8080/test或者http://localhost:8080/test1来访问
2.后端发到前端:
@jsonFile
注解记忆总结
- bean:@Component(@Repository,@Service,@Controller )
@Scope(指定作用域,有单例singleton,多例protoType等) - 属性:@Value
@jsonFile
@Autowired(按类型注入,与@Qualifier联合使用)[其中常用属性名required]
注意:个人觉得@Qualifier是指定对应类的名称,就可以找到对应的类。
@Resource(既可以按名称匹配Bean,也可以按类型匹配Bean,默认按名称)【按类型注入域属性:不需在这个注解里面再指定其他属性;按名称注入域属性:需要加name属性】
注意: @Autowired按类型注入后,再通过@Qualifier找到指定的类注入到这个属性上;@Resource是直接找到指定的类注入 - 生命周期:@PostConstruct与@PreDestroy(在方法上使用@PostConstruct,与原来的init-method等效。在方法上使用@PreDestroy,与destroy-method等效。)
替代applicationContext.xml:@Configuration
@Bean (如@Bean(name=‘myTest’)) - junit4测试:@RunWith(SpringJUnit4ClassRunner.class):用于指定运行环境
@ContextConfiguration(locations=“”):用于指定配置文件位置
@Test - 如果注入对象只有一个子类,@Autowired和@Resource是没有区别的,当有多个子类,特别注意在属性中@Autowired,如果没有指定@Qualifier,就会报错,找不到
@Resource装配顺序
1. 如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常
2. 如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常
3. 如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常
4. 如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配;