介绍
介绍
所谓注解就是Spring框架的一种编程语法,注解的语法特点是以“@”开通后面根这一个名称,注解一般出现在class定义、对象属性定义、对象方法定义、方法参数定义的场合。
使用注解实现如下一些特殊功能:
可以告知编译器何时调用class对象
可以告知编译器何时调用对象方法
可以告知编译器对象属性的值从何而来
可以告知编译器方法参数的值从何而来
可以给class对象增加特殊方法
可以给class对象指定特殊作用
可以给对象方法指定特殊作用
其实注解的作用远不止福哥上面提到的那些作用。我们要学好Spring框架,首先要学会Spring框架的注解,要能灵活地使用这些注解,让它们为我们的程序提供特殊服务。
注解
@RestController
将这个注解放到class定义前面,就表示这个class是作为REST接口使用的,它会被REST控制器统筹处理。
@RestController public class SystemController {
@RequestMapping
将这个注解放到对象方法定义前面,在这个注解里面指定一个URI路径,那么用户在访问这个URI路径的时候会自动映射到这个对象方法上面,由这个对象方法进行响应处理。
@RequestMapping("/member/login") public LoginResult responseLogin(
@RequestParam
这个注解是配合@RequestMapping使用的,在响应处理的对象方法里通过这个注解定义方法参数,则这个参数就会作为URI路径的必选参数,必须通过GET或者POST提供同名参数。
@RequestMapping("/member/login") public LoginResult responseLogin( @RequestParam(value = "user") String user, @RequestParam(value = "pwd") String pwd )
@PathVariable
这个注解是配合@RequestMapping使用的,在通过@RequestMapping设置的URI路径里面使用{}设置参数位之后,就可以通过@PathVariable将参数转成对象方法的参数引入进来。
@RequestMapping(value = "/article/{articleId}", method = RequestMethod.GET) public ArticleDetail responseArticleDetail( @PathVariable(value = "articleId") Integer articleId )
@Configuration
将这个注解放到class定义前面,这个class就会作为配置对象优先被加载,且只会执行一次。
@Configuration public class MyJdbcConfig {
@Bean
将这个注解放到对象方法定义前面,该对象方法就成为了Bean方法,且只会被执行一次。
@Bean(name = "mysqlJT") public JdbcTemplate mysqlJT(
@Qualifier
将这个注解放到对象方法定义前面,声明该方法作为一个服务,可以通过注入方式调用。
@Bean(name = "mysqlJT") @Qualifier("mysqlJT") public JdbcTemplate mysqlJT(
@Autowired
将这个注解放到对象属性定义前面,这个对象属性会被@Autowired指定的服务进行注入赋值。
@Autowired DataSourceConfig myDSC;
@Value
可以使用这个注解调用配置文件application.properties里设置的参数。
public DataSource mysqlDS( @Value("${sql.mysql.url}") String url )
@Data
这个注解是lombok插件特有的,将这个注解放到class定义前面,可以为这个class的属性自动增加getter/setter方法,一般项目里的实体对象都是使用它完成getter/setter方法的。
@Data public class Member { Integer mId; String mName; }
使用
配置文件
控制器参数注入
REST控制器接口
总结
福哥今天带着童鞋们对于Spring框架的注解进行了一个比较深入的了解,学会了这些之后,我们再去编写Spring程序或者看别人的Spring程序都会顺畅多了。学会了Spring框架的注解的使用之后,我们就可以开始学习使用Spring框架去连接数据库等等外部数据引擎了。
下一课,福哥将带着同学们学习在Spring里使用MySQL数据库的技巧,敬请期待~~