一个人开公司做网站外贸公司一年能赚多少
news/
2025/10/8 7:02:35/
文章来源:
一个人开公司做网站,外贸公司一年能赚多少,商务网站开发流程有三个阶段,网站运营知识Java注解是一系列元数据#xff0c;它提供数据用来解释程序代码#xff0c;但是注解并非是所解释的代码本身的一部分。注解对于代码的运行效果没有直接影响。网络上对注解的解释过于严肃、刻板#xff0c;这并不是我喜欢的风格。尽管这样的解释听起来非常的专业。为了缓解大… Java注解是一系列元数据它提供数据用来解释程序代码但是注解并非是所解释的代码本身的一部分。注解对于代码的运行效果没有直接影响。网络上对注解的解释过于严肃、刻板这并不是我喜欢的风格。尽管这样的解释听起来非常的专业。为了缓解大家对“注解”的陌生感我来说点有意思的。其实我对“注解”这个词的第一印象并不是Java的注解而是朱熹的名作《四书章句集注》。为什么我会有这么大的脑洞呢因为当我试着去翻译Annotation这个单词的时候得到的结果是“注释”而不是“注解”。《四书章句集注》正是朱熹对《大学》、《中庸》、《论语》、《孟子》四书做出的重要的注释。要知道该书可是明清以后科举考试的题库和标准答案注解Annotation是在 Java SE 5.0 版本中开始引入的概念同class和interface一样也属于一种类型。很多开发人员认为注解的地位不高但其实不是这样的。像Transactional、Service、RestController、RequestMapping、CrossOrigin等等这些注解的使用频率越来越高。01、为什么要使用注解呢为什么要使用注解呢让我们从另外一个问题说起。“跨域”这两个字就像一块狗皮膏药黏在每一个前端开发者的身上我也不例外虽然我并不是一个纯粹的前端开发者。跨域问题的出现源于浏览器的同源策略——限制一个源加载的脚本去访问另外一个源的资源可有效地隔离潜在的恶意文件是一种重要的安全机制。跨域问题跨域问题的解决方案也有很多比如说1JSONP2Nginx代理3跨域资源共享Cross-origin resource sharing简称CORS可以说是处理跨域问题的标准做法。记得第一次遇到跨域问题的时候我特意向一个同学请教了解决方案他告诉我的答案如下。第一步在web.xml添加filter。filterfilter-namecontextfilter/filter-namefilter-classcom.cmower.filter.WebContextFilter/filter-class
/filter
filter-mappingfilter-namecontextfilter/filter-nameurl-pattern/*/url-pattern
/filter-mapping
第二步实现WebContextFilter类。public class WebContextFilter implements Filter {Overridepublic void destroy() {}Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {HttpServletResponse httpServletResponse (HttpServletResponse) response;httpServletResponse.setHeader(Access-Control-Allow-Origin, *);httpServletResponse.setHeader(Access-Control-Allow-Headers, accept,content-type); httpServletResponse.setHeader(Access-Control-Allow-Methods, OPTIONS,GET,POST,DELETE,PUT); chain.doFilter(request, httpServletResponse);}Overridepublic void init(FilterConfig arg0) throws ServletException {}}
看到这样的解决方案我真的是蛮崩溃的。不就一个跨域问题嘛用得着这么多代码吗我对这样的解决方案非常的不满意。于是下定决心要好好的研究一番大概花了半天的时间吧我终于搞清楚了“跨域”问题以及它的标准解决方案CORS。并且找到了一个极为简洁的解决方案——CrossOrigin只要在Controller类上加上这个注解就可以轻松地解决跨域问题。代码如下。RestController
RequestMapping(course)
CrossOrigin
public class CourseController {
}
如果没有找到CrossOrigin这个注解我真的就要按照同学提供的方案去解决跨域的问题了。但那样做就好像我们卖掉家里的小汽车然后出行的时候驾一辆马车一样。这也正是我想告诉你的为什么要使用注解的原因它让我们的代码看起来更简洁更有时代的进步感。02、该如何定义注解呢注解需要通过interface关键字形式和接口非常的相似只是前面多了一个进行定义。我们可以打开CrossOrigin的源码来看一下。Target({ ElementType.METHOD, ElementType.TYPE })
Retention(RetentionPolicy.RUNTIME)
Documented
public interface CrossOrigin {/*** List of allowed origins, e.g. {code http://domain1.com}.* pThese values are placed in the {code Access-Control-Allow-Origin}* header of both the pre-flight response and the actual response.* {code *} means that all origins are allowed.* pIf undefined, all origins are allowed.* see #value*/AliasFor(value)String[] origins() default {};/*** List of request headers that can be used during the actual request.* pThis property controls the value of the pre-flight responses* {code Access-Control-Allow-Headers} header.* {code *} means that all headers requested by the client are allowed.* pIf undefined, all requested headers are allowed.*/String[] allowedHeaders() default {};/*** List of supported HTTP request methods, e.g.* {code {RequestMethod.GET, RequestMethod.POST}}.* pMethods specified here override those specified via {code RequestMapping}.* pIf undefined, methods defined by {link RequestMapping} annotation* are used.*/RequestMethod[] methods() default {};
}
从上面的代码可以看得出来“注解”真的很“注解”除了注释多和“元注解”多之外真没有别的了。“元注解”什么是“元注解”呢“元注解”是用来注解动词注解名词的注解名词。请感受汉语的博大精深。Target、Retention和Documented就是所谓的元注解。1TargetTarget是目标的意思Target指定了注解运用的场景。都有哪些场景值呢ElementType.ANNOTATION_TYPE可以给注解进行注解ElementType.CONSTRUCTOR可以给构造方法进行注解ElementType.FIELD可以给字段进行注解ElementType.LOCAL_VARIABLE可以给局部变量进行注解ElementType.METHOD可以给方法进行注解ElementType.PACKAGE可以给包进行注解ElementType.PARAMETER可以给方法内的参数进行注解ElementType.TYPE可以给类型进行注解比如类、接口和枚举2RetentionRetention这个单词的意思为保留期。也就是说当Retention应用到一个注解上的时候它解释说明了这个注解的存活时间。来看它的取值范围。RetentionPolicy.SOURCE注解只在源码阶段保留在编译器进行编译时它将被丢弃忽视。RetentionPolicy.CLASS注解只被保留到编译进行的时候并不会被加载到 JVM 中。RetentionPolicy.RUNTIME注解可以保留到程序运行的时候它会被加载进入到 JVM 中所以在程序运行时可以获取到它们。3DocumentedDocumented就比较容易理解它和文档有关。作用就是能够将注解中的元素包含到 Javadoc 中。当我们了解了元注解的概念后再回头看一下CrossOrigin的源码是不是感觉清晰多了呢如果能够细致地读一读源码中的注释你就会看到WebContextFilter类中出现的关键字诸如Access-Control-Allow-Origin、Access-Control-Allow-Headers、Access-Control-Allow-Methods。也就是说当我们通过CrossOrigin对Controller类注解后SpringMVC就能够在运行时对这个类自动加上解决跨域问题的过滤器。03、注解可以反射吗注解是可以通过反射获取的。1可以通过 Class 对象的 isAnnotationPresent() 方法判断该类是否应用了某个指定的注解。2通过 getAnnotation() 方法来获取注解对象。3当获取到注解对象后就可以获取使用注解时定义的属性值。示例如下CrossOrigin(origins http://qingmiaokeji.com, allowedHeaders accept,content-type, methods { RequestMethod.GET, RequestMethod.POST })
public class TestController {public static void main(String[] args) {Class c TestController.class;if (c.isAnnotationPresent(CrossOrigin.class)) {CrossOrigin crossOrigin (CrossOrigin) c.getAnnotation(CrossOrigin.class);System.out.println(Arrays.asList(crossOrigin.allowedHeaders()));System.out.println(Arrays.asList(crossOrigin.methods()));System.out.println(Arrays.asList(crossOrigin.origins()));}}
}// 输出[accept,content-type]
// [GET, POST]
// [http://qingmiaokeji.com]
04、注解经常用在哪里呢1TransactionalSpring 为事务管理提供的功能支持。2 ServiceSpring在进行包扫描的时候会自动将这个类注册到Spring容器中。3RestController是ResponseBody和Controller的组合注解。也就是说下面这段代码与下下面的代码等同。RestController
public class HelloController {RequestMapping(valuehello)public String sayHello(){return hello;}
}
Controller
ResponseBody
public class HelloController {RequestMapping(valuehello)public String sayHello(){return hello;}
}
4RequestMapping Spring Web 应用程序中最常用到的注解之一将 HTTP 请求映射到 MVC 和 REST 控制器的处理方法上。5SelectMyBatis提供的查询语句注解。示例如下Select(select * from city)
ListCity getCitys();
6还有很多很多就不再一一列举了。最后我想说的是注解有许多用处主要有提供信息给编译器 编译器可以利用注解来探测错误和警告信息。编译阶段时的处理 软件工具可以利用注解信息来生成代码、HTML文档。 运行时的处理 某些注解可以在程序运行的时候接受代码的提取。别忘了四书章句集注近期热点推荐Java 最常见的 200 面试题Java 200 面试题补充③ Dubbo 模块Java 200 面试题补充② Netty 模块Java 200 面试题补充 ThreadLocal 模块面试题 和 equals 的区别面试经验分享|精华篇精美简历合集II精美简历合集I
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/931164.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!