从.Net到入坑Java(二)IDEA 安装及环境的配置

打不过就跑吧 2020-11-09 11:36:37
java 安装 配置 IDEA 环境


从放弃.Net到入坑Java(一)

所谓工欲善其事,必先利其器,做java开发也一样,在比较了目前最流行的几个java IDE(eclipse,myeclipse、IDEA)之后,我果断选择IDEA。要知道,写代码的水平可以是一坨屎,但是开发工具一定要用最好的,就像一个人武功很差,又不拿一把像样的兵器在手的话,根本就没法闯荡江湖,分分钟被人砍死了。之前用eclipse,myeclipse的时候,由于和过去用VS的落差太大,弄得我一度想放弃写java代码,直到IDEA的出现,犹如黑暗中的一盏明灯。我是一个效率至上的人,原本可以2s钟撸完的代码,你偏偏要花10s,我就受不了,这不是浪费生命吗?打个比方,同样水平的人搏斗,一个赤手空拳,一个拿把砍刀,谁的胜算大?除非你内功足够强大,强大到不滞于物,草木竹石皆可伤人。所以那种拿记事本撸代码的人,要么就是足够牛,要么就是无形装逼被致命。善假于物也,老鸟和菜鸟很大一个区别就是,老鸟会善用各种好用的辅助开发工具。用这些工具是干嘛的?提升开发效率!产出=时间*效率。时间大家都是8h,你再怎么加班最多24h,而效率往往是可以超越4倍的,也就是说可能你24h也干不过别人8h,因为效率不一样。

srping boot的出现或许可以将java开发人员从996中的魔咒中解脱出来,从而少加班。采用Spring Boot开发实质上也是一个常规的Spring项目开发,只是利用了Spring Boot启动程序和自动配置简化开发过程,提高开发效率。Spring Boot项目开发代码的实现依然是使用Spring mvc+spring+mybatis等,当然能集成几乎所有的开源项目。

PS:如果在配置过程中遇到任何问题,可下方留言或者查看我的个人公告,随时在线解答,还有我这段时间整理的一些Java学习手册,面试题,开发工具,PDF文档书籍教程,需要的话都可以免费分享。言归正传:

java环境配置

下载java JDK,建议1.8以上版本。

我这里下载的是:jdk_8.0.1310.11_64.exe

然后进行安装,我这里的安装目录是C:\Program Files\Java\jdk1.8.0_131,后面会用的。

配置环境变量

新建系统变量JAVA_HOME,值:C:\Program Files\Java\jdk1.8.0_131

编辑环境变量Path,在变量值的最前面添加%JAVA_HOME%\bin;,注意最后要有一个;分隔。

IDEA安装及破解

现在最新版是IntelliJ IDEA 2018.2了,我之前下载的是IntelliJ IDEA 2018.1.4 x64,因为我的是win10 64bit系统。

下载完成之后,点击下一步下一步就可以了,但是在最后那一步一定要注意,否则可能破解失败,那就是在最后出现完成界面的时候,一定要把那个是否马上运行前面的勾去掉。

(1)编辑电脑上C:\Windows\System32\drivers\etc下的hosts文件

加入下面一行代码:

0.0.0.0 account.jetbrains.com

保存并关闭。

(2)打开http://idea.lanyus.com/,获取注册码

 

 

打开IDEA,

 

 IDEA配置

IDEA安装后之后,我们要来对其进行个性化配置,我觉得最重要的有两点,一个是快捷键的配置,一个是代码显示风格的配置,像我习惯了VS的代码显示风格,那么我们可以对其进行自定义修改。

我制作了一个配置文件,下载地址:https://files.cnblogs.com/files/jiekzou/settings.zip

下载完成之后,解压之后是一个settings.jar文件,然后在IDEA中把配置导入进来即可。

最后的显示效果如下:

 

关于IDEA的代码格式化快捷键,默认是:Ctrl+Alt+L,这和许多软件的锁屏快捷键冲突,所以我建议将其进行修改,我这里已经修改为和VS代码格式化快捷键一样:Ctrl+K,Ctrl+F。这样两个组合快捷键。

File——Settings

在VS中代码提示大小写是不敏感的,而IDEA默认情况下是敏感的,由于个人习惯,那么我需要将IDEA的代码智能提示也修改为大小写不敏感。

 

在IDEA中写的代码或者复制进去的代码,其命名空间也就是包会自动引入的,如果出现多个包,那么就需要自己手动引入,引入方式也很简单,用鼠标点到代码位置处,然后Atl+Enter,选择指定的包就可以了。虽然java中没有属性这个传说,C#中属性其实就是像java中一样是通过一个get方法和一个set方法实现的,只是C#进行了封装,而java需要自己写,不过IDEA中有快捷键可以自动生成字段的属性:Alt+Insert。

不管使用什么样的IDE,熟记各种快捷键都是必须的,为啥?效率!效率!还是效率!

第一个spring boot web 程序

what's spring boot?

我的理解是:spring boot=spring+spring mvc+一堆java技术栈的相关框架+约定大于配置的思想。

spring boot 并不是一项新的技术,就像ajax一样,而是各种已有技术的一个组合。它的出现,将极大地提高java应用的开发效率。同时,它的出现,彻底颠覆了以往我对java的认识(除了配置,TMD还是配置)。轻量级、可插拔、微服务。

File——New——Project

关于https://start.spring.io/,我们打开看下这是个啥

 

这不正是生成项目jar包的界面吗,直接在这个界面生成jar包,然后用eclipse打开也是一样的呀。

注意:通过这种方式来创建spring boot项目,会联网,从网站下载一些jar包。如果你想要通过离线的方式创建项目,可以选择Maven。

由于是web项目,那么我们这里选择web,关于spring boot版本,最新版本是2.1.0,我这里用它的上一个稳定版1.5.14。我们看到有些版本后面有SNAPSHOT字样,表明那是抢鲜版。

 

一直点击下一步,最终项目结果目录如下:

 

我们先来看下pom.xml,它是maven来管理各种jar包依赖的一个配置文件,maven相当于.net中的nuget,是一个包管理工具。

 

我们看到<parent>节点中申明了版本号,而且它是作为一个父节点,那么也就意味着它的子节点可以继承这个父节点的版本依赖。哪些是它的子节点,就是<dependencies>下面groupId和<parent>中groupId一致的依赖。这个pom.xml中的文件,正是我们之前可视化配置之后的产物,里面的一些信息就是我们之前填写的。那么后续,我们需要扩展的时候,只要直接修改这个配置文件就可以了。

关于pom.xml详解,请参考:pom.xml详解

如果你在pom.xml中添加代码的时候,没有智能提示,那么你需要更新一下。

 接下来,我们看下FirstdemoApplication这个类

我们看到有一个@SpringBootApplication注解,我们查看一下它的源码如下:

 

从源码中可以看出,其实@SpringBootApplication = (默认属性)@Configuration + @EnableAutoConfiguration + @ComponentScan。

我们依次再分别来看下这三个注解是什么意思。

@Configuration 是一个类级注释,指示对象是一个bean定义的源。@Configuration 类通过 @bean 注解的公共方法声明bean。 @Configuration的注解类标识这个类可以使用Spring。

@Bean 注释是用来表示一个方法实例化,配置和初始化是由 Spring IoC 容器管理的一个新的对象。

@Configuration 一般与 @Bean 注解配合使用,用 @Configuration 注解类等价与 XML 中配置 beans,用 @Bean 注解方法等价于 XML 中配置 bean。

@EnableAutoConfiguration 注解的类所在的包有特定的意义,并且作为默认配置使用。

@ComponentScan 注解会自动扫描指定包下的全部标有 @Component注解 的类,并注册成bean,当然包括@Component下的子注解@Service,@Repository,@Controller。

application.properties

这是应用的配置文件,跟.net项目中的web.config差不多。但是我个人更习惯于使用application.yml这个文件来替代application.properties

修改application.properties,命名为application.properties-bak,其实就是让这个配置文件失效,但是我又不想直接删除它。

然后在添加一个文件application.yml,注意要和application.properties在同一级目录下面。

添加配置项:

我这里修改tomcat服务器的启动端口为8082,由于IDEA srping boot项目中自带了tomcat,所以我们不需要配置外部的tomcat。

新建一个控制器TestController,它这个控制器的命名规范和.net mvc中规范一致,都是Controller结尾。代码如下:

@RequestMapping("/hello")和@RequestMapping(value = "/hello"是等价的。

@RequestMapping(value = "/hello",method =RequestMethod.GET)和 @GetMapping("/hello")是等价的。
@RestController注解相当于@ResponseBody + @Controller。

如果需要返回到指定页面,则需要用 @Controller配合视图解析器InternalResourceViewResolver才行。
如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解。

注意:@RestController注解,相当于@Controller+@ResponseBody两个注解的结合,返回json数据不需要在方法前面加@ResponseBody注解了,但使用@RestController这个注解,就不能返回jsp,html页面,视图解析器无法解析jsp,html页面

运行程序:

热部署

在这之前,如果我们每次修改了代码,都必须重启一下服务器,并重新运行代码,那么有了热部署之后,修改了代码,我们只需要在IDEA中点击一下Build,就可以直接看到效果了,不需要重启服务器。

pom.xml文件中添加如下依赖:

添加依赖之后,在IDEA的右下角会弹出如下提示框

 

点击“Import Changes"将会自动下载j所依赖的jar包。

修改pom.xml,

 

如果不想每次修改后都要手动去Build,可以在IDEA中配置自动Build

然后按组合键:Shift+ALT+Ctrl+/ ,选择“Registry”,回车,找到“complier.automake.allow.when.app.running”,点击勾选即可。

优点:简单,支持Spring-boot项目,支持成员级别的修改热部署。

缺点:只支持spring-boot项目。

读取配置文件

修改配置文件application.yml,添加如下代码:

 

新建配置文件类WebSiteConfig,字段名称和配置项中的名称保持一致。

 

在控制器类TestController中修改代码:

 

 

是不是感觉像使用vs开发asp.net mvc项目一样那么简单?甚至比.net 操作配置文件还方便吧。

 

版权声明
本文为[打不过就跑吧]所创,转载请带上原文链接,感谢
https://www.cnblogs.com/lcywuwuwu/p/13947022.html

  1. 【计算机网络 12(1),尚学堂马士兵Java视频教程
  2. 【程序猿历程,史上最全的Java面试题集锦在这里
  3. 【程序猿历程(1),Javaweb视频教程百度云
  4. Notes on MySQL 45 lectures (1-7)
  5. [computer network 12 (1), Shang Xuetang Ma soldier java video tutorial
  6. The most complete collection of Java interview questions in history is here
  7. [process of program ape (1), JavaWeb video tutorial, baidu cloud
  8. Notes on MySQL 45 lectures (1-7)
  9. 精进 Spring Boot 03:Spring Boot 的配置文件和配置管理,以及用三种方式读取配置文件
  10. Refined spring boot 03: spring boot configuration files and configuration management, and reading configuration files in three ways
  11. 精进 Spring Boot 03:Spring Boot 的配置文件和配置管理,以及用三种方式读取配置文件
  12. Refined spring boot 03: spring boot configuration files and configuration management, and reading configuration files in three ways
  13. 【递归,Java传智播客笔记
  14. [recursion, Java intelligence podcast notes
  15. [adhere to painting for 386 days] the beginning of spring of 24 solar terms
  16. K8S系列第八篇(Service、EndPoints以及高可用kubeadm部署)
  17. K8s Series Part 8 (service, endpoints and high availability kubeadm deployment)
  18. 【重识 HTML (3),350道Java面试真题分享
  19. 【重识 HTML (2),Java并发编程必会的多线程你竟然还不会
  20. 【重识 HTML (1),二本Java小菜鸟4面字节跳动被秒成渣渣
  21. [re recognize HTML (3) and share 350 real Java interview questions
  22. [re recognize HTML (2). Multithreading is a must for Java Concurrent Programming. How dare you not
  23. [re recognize HTML (1), two Java rookies' 4-sided bytes beat and become slag in seconds
  24. 造轮子系列之RPC 1:如何从零开始开发RPC框架
  25. RPC 1: how to develop RPC framework from scratch
  26. 造轮子系列之RPC 1:如何从零开始开发RPC框架
  27. RPC 1: how to develop RPC framework from scratch
  28. 一次性捋清楚吧,对乱糟糟的,Spring事务扩展机制
  29. 一文彻底弄懂如何选择抽象类还是接口,连续四年百度Java岗必问面试题
  30. Redis常用命令
  31. 一双拖鞋引发的血案,狂神说Java系列笔记
  32. 一、mysql基础安装
  33. 一位程序员的独白:尽管我一生坎坷,Java框架面试基础
  34. Clear it all at once. For the messy, spring transaction extension mechanism
  35. A thorough understanding of how to choose abstract classes or interfaces, baidu Java post must ask interview questions for four consecutive years
  36. Redis common commands
  37. A pair of slippers triggered the murder, crazy God said java series notes
  38. 1、 MySQL basic installation
  39. Monologue of a programmer: despite my ups and downs in my life, Java framework is the foundation of interview
  40. 【大厂面试】三面三问Spring循环依赖,请一定要把这篇看完(建议收藏)
  41. 一线互联网企业中,springboot入门项目
  42. 一篇文带你入门SSM框架Spring开发,帮你快速拿Offer
  43. 【面试资料】Java全集、微服务、大数据、数据结构与算法、机器学习知识最全总结,283页pdf
  44. 【leetcode刷题】24.数组中重复的数字——Java版
  45. 【leetcode刷题】23.对称二叉树——Java版
  46. 【leetcode刷题】22.二叉树的中序遍历——Java版
  47. 【leetcode刷题】21.三数之和——Java版
  48. 【leetcode刷题】20.最长回文子串——Java版
  49. 【leetcode刷题】19.回文链表——Java版
  50. 【leetcode刷题】18.反转链表——Java版
  51. 【leetcode刷题】17.相交链表——Java&python版
  52. 【leetcode刷题】16.环形链表——Java版
  53. 【leetcode刷题】15.汉明距离——Java版
  54. 【leetcode刷题】14.找到所有数组中消失的数字——Java版
  55. 【leetcode刷题】13.比特位计数——Java版
  56. oracle控制用户权限命令
  57. 三年Java开发,继阿里,鲁班二期Java架构师
  58. Oracle必须要启动的服务
  59. 万字长文!深入剖析HashMap,Java基础笔试题大全带答案
  60. 一问Kafka就心慌?我却凭着这份,图灵学院vip课程百度云