Difference between revisions of "IntelliJ IDEA"

(Created page with " https://www.jetbrains.com/idea/download/#section=windows ==Register a GitHub account in IntelliJ IDEA== https://www.jetbrains.com/help/idea/manage-projects-hosted-on-github....")
 
 
(14 intermediate revisions by the same user not shown)
Line 4: Line 4:
 
==Register a GitHub account in IntelliJ IDEA==
 
==Register a GitHub account in IntelliJ IDEA==
 
https://www.jetbrains.com/help/idea/manage-projects-hosted-on-github.html
 
https://www.jetbrains.com/help/idea/manage-projects-hosted-on-github.html
 +
 +
==SPRING INITIALIZR==
 +
https://start.spring.io/
 +
 +
==Plugins==
 +
FindBugs-IDEA
 +
 +
Checkstyle-IDEA (Configure to config/checkstyle/checkstyle.xml)
 +
 +
SonarLint (Configure to server http://si-jenkins01.dev.setl.io:8081)
 +
 +
==ShortCuts==
 +
 +
[https://resources.jetbrains.com/storage/products/intellij-idea/docs/IntelliJIDEA_ReferenceCard.pdf MacOs Shortcuts] *****
 +
 +
 +
<table>
 +
<tr>
 +
<td><strong>Eclipse</strong></td>
 +
<td><strong>IntelliJ IDEA</strong></td>
 +
<td><strong>Description</strong></td>
 +
</tr>
 +
<tr>
 +
<td>F4</td>
 +
<td>ctrl+h</td>
 +
<td>show the type hierarchy</td>
 +
</tr>
 +
<tr>
 +
<td>ctrl+alt+g</td>
 +
<td>ctrl+alt+F7</td>
 +
<td>find usages</td>
 +
</tr>
 +
<tr>
 +
<td>ctrl+shift+u</td>
 +
<td>ctrl+f7</td>
 +
<td>finds the usages in the same file</td>
 +
</tr>
 +
<tr>
 +
<td>alt+shift+r</td>
 +
<td>shift+F6</td>
 +
<td>rename</td>
 +
</tr>
 +
<tr>
 +
<td>ctrl+shift+r</td>
 +
<td>ctrl+shift+N</td>
 +
<td>find file / open resource</td>
 +
</tr>
 +
<tr>
 +
<td>ctrl+shift+x, j</td>
 +
<td>ctrl+shift+F10</td>
 +
<td>run (java program)</td>
 +
</tr>
 +
<tr>
 +
<td>ctrl+shift+o</td>
 +
<td>ctrl+alt+o</td>
 +
<td>organize imports</td>
 +
</tr>
 +
<tr>
 +
<td>ctrl+o</td>
 +
<td>ctrl+F12</td>
 +
<td>show current file structure / outline</td>
 +
</tr>
 +
<tr>
 +
<td>ctrl+shift+m</td>
 +
<td>ctrl+alt+V</td>
 +
<td>create local variable refactoring</td>
 +
</tr>
 +
<tr>
 +
<td>syso ctrl+space</td>
 +
<td>sout ctrj+j</td>
 +
<td>System.out.println(&#8220;&#8221;)</td>
 +
</tr>
 +
<tr>
 +
<td>alt + up/down</td>
 +
<td>ctrl + shift + up/down</td>
 +
<td>move lines</td>
 +
</tr>
 +
<tr>
 +
<td>ctrl + d</td>
 +
<td>ctrl + y</td>
 +
<td>delete current line</td>
 +
</tr>
 +
<tr>
 +
<td>???</td>
 +
<td>alt + h</td>
 +
<td>show subversion history</td>
 +
</tr>
 +
<tr>
 +
<td>ctrl + h</td>
 +
<td>ctrl + shift + f</td>
 +
<td>search (find in path)</td>
 +
</tr>
 +
<tr>
 +
<td>&#8220;semi&#8221; set in window-&gt; preferences</td>
 +
<td>ctrl + shift + enter</td>
 +
<td>if I want to add the semi-colon at the end of a statement</td>
 +
</tr>
 +
<tr>
 +
<td>ctrl + 1 or ctrl + shift + l</td>
 +
<td>ctrl + alt + v</td>
 +
<td>introduce local variable</td>
 +
</tr>
 +
<tr>
 +
<td>alt + shift + s</td>
 +
<td>alt + insert</td>
 +
<td>generate getters / setters</td>
 +
</tr>
 +
<tr>
 +
<td>ctrl + shift + f</td>
 +
<td>ctrl + alt + l</td>
 +
<td>format code</td>
 +
</tr>
 +
<tr>
 +
<td>ctrl + y</td>
 +
<td>ctrl + shift + z</td>
 +
<td>redo</td>
 +
</tr>
 +
<tr>
 +
<td>ctrl + shift + c</td>
 +
<td>ctrl + /</td>
 +
<td>comment out lines (my own IDEA shortcut definition for comment/uncomment on german keyboard layout on laptop: ctrl + shift + y)</td>
 +
</tr>
 +
<tr>
 +
<td>ctrl + alt + h</td>
 +
<td>ctrl + alt + h (same!)</td>
 +
<td>show call hierarchy</td>
 +
</tr>
 +
<tr>
 +
<td>none ?</td>
 +
<td>ctrl + alt + f7</td>
 +
<td>to jump to one of the callers of a method</td>
 +
</tr>
 +
<tr>
 +
<td>ctrl + shift + i</td>
 +
<td>alt + f8</td>
 +
<td>evaluate expression (in debugger)</td>
 +
</tr>
 +
<tr>
 +
<td>F3</td>
 +
<td>ctrl + b</td>
 +
<td>go to declaration (e.g. go to method)</td>
 +
</tr>
 +
<tr>
 +
<td>ctrl + l</td>
 +
<td>ctrl + g</td>
 +
<td>go to line</td>
 +
</tr>
 +
</table>
 +
 +
https://www.jetbrains.com/help/idea/configuring-keyboard-and-mouse-shortcuts.html
 +
 +
https://www.catalysts.cc/en/wissenswertes/intellij-idea-and-eclipse-shortcuts/
 +
 +
==IntelliJ - Git Setting ==
 +
https://www.youtube.com/watch?v=uUzRMOCBorg
 +
 +
==Tips & Tricks==
 +
 +
<syntaxhighlight lang="java">
 +
 +
import org.slf4j.Logger;
 +
import org.slf4j.LoggerFactory;
 +
 +
@SpringBootApplication
 +
@ComponentScan("com.oasissofttech.forotherpackagebeans")//default is main class package and sub-packages
 +
public SpringMainClass {
 +
private static Logger LOGGER = LoggerFactory.getLogger(SpringMainClass.class);
 +
 +
public static void main(Stirng[] args){
 +
ApplicationContext applicationContext = SpringApplication.run(SpringMainClass.class,args);
 +
 +
PersonDAO personDao = applicationContext.getBean(PersonDAO.class);
 +
 +
LOGGER.info("{}",personDao);
 +
}
 +
}
 +
 +
...
 +
..
 +
@Component
 +
@Scope(value=ConfigurableBeanFactory.SCOPE_PROTOTYPE,
 +
proxyMode = ScopedProxyMode.TARGET_CLASS)
 +
public class JdbcConnection{
 +
public JdbcConnection{
 +
System.out.println("JDBC connection");
 +
}
 +
}
 +
 +
@PostConstruct
 +
public void postConstruct(){
 +
LOGGER.info("postConstruct");
 +
}
 +
 +
@PreDestroy
 +
public void preDestroy(){
 +
LOGGER.info("preDestroy");
 +
}
 +
 +
 +
</syntaxhighlight>
 +
 +
===application.properties file===
 +
<source>
 +
  logging.level.org.springframework = debug
 +
  logging.level.root=debug #springboot
 +
  spring.jpa.show-sql=true
 +
  spring.h2.console.enabled=true
 +
</source>
 +
 +
===Mockito===
 +
<syntaxhighlight lang="java">
 +
@RunWith(MockitoJUnitRunner.class)
 +
public class MockitoTest{
 +
  @Mock
 +
  DataService dataServiceMock;
 +
 +
  @InjectMocks
 +
  SomeBusinessImpl businessImpl;
 +
 +
  @Test
 +
  public void testCase1(){
 +
    when(dataServiceMock.retrieveAllData()).thenReturn(new int[]{24,15,3});
 +
    assertEquals(24,businessImpl.findTheGreatestFromAllData());
 +
  }
 +
  ..
 +
  ..
 +
}
 +
</syntaxhighlight>
 +
 +
===Spring Unit Testing with an XML Context===
 +
@ContextConfiguration(location="/applicationContext.xml")
 +
 +
===Spring Boot Actuator===
 +
<syntaxhighlight lang="xml">
 +
<dependencies>
 +
  <dependency>
 +
    <groupId>org.springframework.boot</groupId>
 +
    <artifactId>spring-boot-starter-actuator</artifactId>
 +
  </dependency>
 +
  <dependency>
 +
    <groupId>org.springframework.data</groupId>
 +
    <artifactId>spring-data-rest-hal-browser</artifactId>
 +
  </dependency>
 +
</dependencies>
 +
</syntaxhighlight>
 +
 +
actuator url: http://locahost:8080/application  - The HAL Browser
 +
 +
===Spring Boot Developer Tools===
 +
no need to restart server/application, it is automatically pick up
 +
<syntaxhighlight lang="xml">
 +
<dependencies>
 +
....
 +
  <dependency>
 +
    <groupId>org.springframework.boot</groupId>
 +
    <artifactId>spring-boot-devtools</artifactId>
 +
  </dependency>
 +
...
 +
</dependencies>
 +
</syntaxhighlight>

Latest revision as of 08:13, 24 August 2018

https://www.jetbrains.com/idea/download/#section=windows

Register a GitHub account in IntelliJ IDEA

https://www.jetbrains.com/help/idea/manage-projects-hosted-on-github.html

SPRING INITIALIZR

https://start.spring.io/

Plugins

FindBugs-IDEA

Checkstyle-IDEA (Configure to config/checkstyle/checkstyle.xml)

SonarLint (Configure to server http://si-jenkins01.dev.setl.io:8081)

ShortCuts

MacOs Shortcuts *****


Eclipse IntelliJ IDEA Description
F4 ctrl+h show the type hierarchy
ctrl+alt+g ctrl+alt+F7 find usages
ctrl+shift+u ctrl+f7 finds the usages in the same file
alt+shift+r shift+F6 rename
ctrl+shift+r ctrl+shift+N find file / open resource
ctrl+shift+x, j ctrl+shift+F10 run (java program)
ctrl+shift+o ctrl+alt+o organize imports
ctrl+o ctrl+F12 show current file structure / outline
ctrl+shift+m ctrl+alt+V create local variable refactoring
syso ctrl+space sout ctrj+j System.out.println(“”)
alt + up/down ctrl + shift + up/down move lines
ctrl + d ctrl + y delete current line
??? alt + h show subversion history
ctrl + h ctrl + shift + f search (find in path)
“semi” set in window-> preferences ctrl + shift + enter if I want to add the semi-colon at the end of a statement
ctrl + 1 or ctrl + shift + l ctrl + alt + v introduce local variable
alt + shift + s alt + insert generate getters / setters
ctrl + shift + f ctrl + alt + l format code
ctrl + y ctrl + shift + z redo
ctrl + shift + c ctrl + / comment out lines (my own IDEA shortcut definition for comment/uncomment on german keyboard layout on laptop: ctrl + shift + y)
ctrl + alt + h ctrl + alt + h (same!) show call hierarchy
none ? ctrl + alt + f7 to jump to one of the callers of a method
ctrl + shift + i alt + f8 evaluate expression (in debugger)
F3 ctrl + b go to declaration (e.g. go to method)
ctrl + l ctrl + g go to line

https://www.jetbrains.com/help/idea/configuring-keyboard-and-mouse-shortcuts.html

https://www.catalysts.cc/en/wissenswertes/intellij-idea-and-eclipse-shortcuts/

IntelliJ - Git Setting

https://www.youtube.com/watch?v=uUzRMOCBorg

Tips & Tricks

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@SpringBootApplication
@ComponentScan("com.oasissofttech.forotherpackagebeans")//default is main class package and sub-packages
public SpringMainClass {
	private static Logger LOGGER = LoggerFactory.getLogger(SpringMainClass.class);

	public static void main(Stirng[] args){
		ApplicationContext applicationContext = SpringApplication.run(SpringMainClass.class,args);
		
		PersonDAO personDao = applicationContext.getBean(PersonDAO.class);
		
		LOGGER.info("{}",personDao);
	}	
}	

...
..
@Component
@Scope(value=ConfigurableBeanFactory.SCOPE_PROTOTYPE, 
		proxyMode = ScopedProxyMode.TARGET_CLASS)
public class JdbcConnection{
	public JdbcConnection{
		System.out.println("JDBC connection");
	}
}

@PostConstruct
public void postConstruct(){
	LOGGER.info("postConstruct");
}

@PreDestroy
public void preDestroy(){
	LOGGER.info("preDestroy");
}

application.properties file

   logging.level.org.springframework = debug
   logging.level.root=debug #springboot
   spring.jpa.show-sql=true
   spring.h2.console.enabled=true

Mockito

@RunWith(MockitoJUnitRunner.class)
public class MockitoTest{
  @Mock
  DataService dataServiceMock;

  @InjectMocks
  SomeBusinessImpl businessImpl;

  @Test
  public void testCase1(){
    when(dataServiceMock.retrieveAllData()).thenReturn(new int[]{24,15,3});
    assertEquals(24,businessImpl.findTheGreatestFromAllData());
  }
  ..
  ..
}

Spring Unit Testing with an XML Context

@ContextConfiguration(location="/applicationContext.xml")

Spring Boot Actuator

<dependencies>
  <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-actuator</artifactId>
  </dependency>
  <dependency>
     <groupId>org.springframework.data</groupId>
     <artifactId>spring-data-rest-hal-browser</artifactId>
  </dependency>
</dependencies>

actuator url: http://locahost:8080/application - The HAL Browser

Spring Boot Developer Tools

no need to restart server/application, it is automatically pick up

<dependencies>
....
  <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-devtools</artifactId>
  </dependency>
...
</dependencies>