Difference between revisions of "IntelliJ IDEA"
(11 intermediate revisions by the same user not shown) | |||
Line 5: | Line 5: | ||
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== | ==ShortCuts== | ||
+ | |||
+ | [https://resources.jetbrains.com/storage/products/intellij-idea/docs/IntelliJIDEA_ReferenceCard.pdf MacOs Shortcuts] ***** | ||
Line 148: | Line 159: | ||
==IntelliJ - Git Setting == | ==IntelliJ - Git Setting == | ||
https://www.youtube.com/watch?v=uUzRMOCBorg | 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
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
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>