总结项目我们常用的注解

网友投稿 638 2022-05-30

注解产生的原因

给大家看看SSM项目的配置文件!

applicationContext.xml文件

在使用注解之前,XML被广泛用于框架的配置,开发人员和架构师认为XML维护变得越来越麻烦。

开发速度相对较慢,编译时很难检查出错误, 运行中的错误很难定位, 调试难度较大。后来注解开发的方式应运而生,

注入bean的时,一个注解搞定,接收http请求时,一个注解搞定。轻松高效,出现bug很快就能解决

xml 和 注解的使用场景与区别

注解:是一种分散式的元数据,与源代码紧绑定。

xml:是一种集中式的元数据,与源代码无绑定。

注解与注释?

注释:给程序员去看

注解:给计算机去看

Java注解: JDK5.0 引入的一种注释机制。

最开始:Java 定义了一套注解,共有 7 个,3 个在 java.lang 中,剩下 4 个在 java.lang.annotation 中。后来有慢慢加了很多。

常用的四个: @Override:标明此方法覆盖了父类的方法 @Target :描述注解能够作用的位置 ElementType取值: * TYPE:可以作用于类上 * METHOD:可以作用于方法上 * FIELD:可以作用于成员变量上 @Retention :描述注解被保留的阶段 RetentionPolicy取值: * SOURCE:源文件有效 * Class:Class文件有效 * RUNTIME:运行时有效 @Documented: 描述注解是否被抽取到api文档中

Spring的注解

用于创建对象的

@Component:把资源让spring来管理。相当于xml中配置一个bean。 value:指定bean的id,如果不指定value属性,默认bean的id是当前类的类名。首字母小写 @Controller:与@Component功能一样,一般用在表现层,便于分层 @Service:与@Component功能一样,一般用在业务层,便于分层 @Repository:与@Component功能一样,一般用于持久层,便于分层 @Bean:该注解只用用在方法上,表明使用此方法创建一个对象,并且放入spring容器中

用于注入数据的

总结项目中我们常用的注解

@Autowired:自动按照类型注入。 使用要注入的对象变量名称作为bean的id,在spring容器中查找,找到了注入成功,找不到就报错。 默认按类型装配 , 也可以使用名称装配,配合@Qualifier注解 @Qualifier:在自动按照类型注入的基础上,再按照Bean的id注入。 @Resource:直接按照Bean的id注入。它也只能注入其他Bean类型。name属性是指定Bean的id 默认按名称进行装配,通过name属性进行指定 @Value:注入基本数据类型和String类型数据 @Value("${authUrl.productId}")-常用与注入配置文件中的数据

Spring5的新注解

@Configuration:用于指定当前类是一个spring配置类,当有容器时会从该类上加载注解。 @ComponentScan:用于指定spring在初始化容器时要扫描的包。 @Import:用于导入其他配置类,解耦合 @Scope("prototype"):指定Bean的作用范围 ---singleton单例,prototype多例

SpringMVC的注解

@RequestParam:把请求中指定名称的参数给控制器中的形参赋值 @GetMapping(value = "/queryReceivedNegotiation") public Wrapper queryReceivedNegotiation(@RequestParam String userId) ----示例 http://localhost:8012/upload/queryReceivedNegotiation?userId=3433434 @PathVariable:用于绑定URL中的占位符 @GetMapping(value = "/querySumBulletChat/{userId}") public Wrapper queryCommentReply( @PathVariable String userId) ----示例 http://localhost:8012/videoBulletchat/querySumBulletChat/3434 upload/queryReceivedNegotiation?userId=adfadfad videoBulletchat/querySumBulletChat/this.userid: # RequestParam只能用于接收请求带的params # PathVariable用于接收url路径上的参数 @RequestBody:用于获取请求体内容 @RequestMapping:RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。 作用与类上用@RequestMapping 作用与方法上可用@RequestMapping的变形 @GetMapping与@PostMapping @GetMapping是一个组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写。 @PostMapping是一个组合注解,是@RequestMapping(method = RequestMethod.POST)的缩写。 @GetMapping:Get请求 @PostMapping:post请求 @PostMapping("insertPdfBehavior") public Wrapper insertUserBehavior(@RequestBody PdfBehaivorEntiry entiry)

Mybatis的注解

@Insert 增 @Insert("insert into t_md5(id,md5,path,create_time,update_time,creator,remark,is_delete) values (#{id},#{md5},#{path},#{createtime},#{updatetime},#{creator},#{remark},#{isdelete})") @Delete 删 @Delete("DELETE FROM t_project WHERE project_name=#{projectName}") @Update 改 @Update("UPDATE t_project SET project_name =#{newName} where id =#{id}") @Select 查 @Select("select * from t_project where project_name=#{name}")

自定义注解--简单例子

/** * @Author: Promsing(张有博) * @Date: 2021/8/21 - 17:09 * @Description: 自定义注解 * @version: 1.0 */ @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface MyAnnotation { String getValue(); } public class HelloService { static Class clazz=HelloService.class; @MyAnnotation(getValue = "hello") public static void sayHello(){ Method sayHello = null; try { sayHello = clazz.getMethod("sayHello", null); MyAnnotation annotation = sayHello.getAnnotation(MyAnnotation.class); System.out.println(annotation.getValue()); } catch (NoSuchMethodException e) { e.printStackTrace(); } } public static void main(String[] args) { sayHello(); } }

注解:

解开注解的神秘面纱

像是在一个广场上(项目),给部分人打上一个标签(注解),然后可以根据某种“机制”找到这些标签,并给这些标签赋值,修改。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【2022 年】Python3 爬虫教程 - 什么是Ajax?
下一篇:BAT大厂都在用的Docker。学会这三招,面试、工作轻松hold住
相关文章