IntelliJ IDEA
https://www.jetbrains.com/idea/download/#section=windows
Contents
Register a GitHub account in IntelliJ IDEA
https://www.jetbrains.com/help/idea/manage-projects-hosted-on-github.html
SPRING INITIALIZR
Plugins
FindBugs-IDEA
Checkstyle-IDEA (Configure to config/checkstyle/checkstyle.xml)
SonarLint (Configure to server http://si-jenkins01.dev.setl.io:8081)
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=trueMockito
@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>