= 롬복 등록하기 =
Project Lombok
projectlombok.org
사이트에 들어가서, 중앙 상단에서 약간 우측에 다운로드 버튼 눌르기
여기에서 specify location을 눌러서,
보통 프로젝트 진행하는 폴더에 eclipse 폴더로 간 후에 select를 누르고, 오른쪽 아래에 install / update를 해줍니다.
그리고 나서 해야할 일
pom.xml에 붙여줘야하는 것들이 있다.
여기에 들어가서, lombok 검색 후>1project lombok > 1.18.22버전을 들어가서
저기 창을 클릭하면, 자동으로 복사가 된다.
복사 된 이후에 pom.xml에 가서 11줄 근처에 dependencies아래에 붙여넣으면 된다.
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
<scope>provided</scope>
</dependency>
버전을 바꿔줘서 등록 했기 때문에, 참고하기~
= log4j.xml 수정하기 =
< src/test/resources 폴더 내에 있는 log4j (다른 폴더랑 헷갈리지 말기) >
<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">
두번째 줄에 붙여넣기!
사실 이부분에 이걸 복사해서 붙여넣으면 에러가 뜨는데, 에러가 떠도 잘 돌아가니까 무시하고 그냥 진행하면 된다.
= 롬복 기초 01 =
스프링을 사용하는 이유 : 예전에는 왼쪽과 같은 방식으로 진행을 했다면,
이제는 스프링을 활용하면 오른쪽과 같은 형태의 진행이 가능하다
= p01lombok =
< App.java >
package lecture.p01lombok;
import java.util.logging.Level;
import lombok.extern.java.Log;
@Log
public class App {
public static void main(String[] args) {
Customer c1 = new Customer();
c1.setAddress("gangnam");
c1.setId(1);
c1.setCity("jeju");
c1.setName("Korea");
System.out.println(c1.getAddress());
System.out.println(c1.getCity());
System.out.println(c1.getId());
System.out.println(c1.getName());
System.out.println(c1.toString());
System.out.println(c1);
Customer c2 = new Customer(2,"usa","ny","queens");
System.out.println();
Employee emp1 = new Employee(1,"kim","Korea");
System.out.println(emp1);
// log.log(Level.INFO, emp1.toString());
log.severe(emp1.toString());
log.warning(emp1.toString());
log.info(emp1.toString());
log.config(emp1.toString());
}
}
< Customer.java >
package lecture.p01lombok;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@Setter
@Getter
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class Customer {
private int id;
private String name;
private String city;
private String address;
}
@NoArgsConstructor = 파라미터없는 생성자도 만들어진다.
< Employee.java >
package lecture.p01lombok;
import lombok.AllArgsConstructor;
import lombok.Data;
@Data
@AllArgsConstructor
public class Employee {
private int id;
private String name;
private String notes;
}
보통 주로 사용하는 어노테이션 @data
getmethod() / setmethod() / toString() / +equals() / hash() 까지 만드러준다.
< Supplier.java >
package lecture.p01lombok;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Supplier {
// 필드 작성 및
// lombok 어노테이션으로
// getter, setter, toString
// 생성자 등을 만들기
private int id;
private String name;
}
기본적인 롬복 사용법과 함께, 필드가 어떻게 작성되는지 보고 시도해보기!
= p02lombok =
< App.java >
package lecture.p02lombok;
import lecture.p01lombok.Employee;
import lombok.extern.log4j.Log4j;
@Log4j
public class App {
public static void main(String[] args) {
Employee e1 = new Employee(3, "seoul","korea");
log.info(e1.toString());
log.debug(e1);
log.info(e1);
log.warn(e1);
log.error(e1);
log.fatal(e1);
}
}
= p03core =
< App.java >
package lecture.p03core;
public class App {
public static void main(String[] args) {
MyServlet s1 = new MyServlet();
s1.setDao(new MyDao()); //
s1.doGet();
}
}
< MyDao.java >
package lecture.p03core;
public class MyDao {
public void update() {
// TODO Auto-generated method stub
}
}
< MyServlet.java >
package lecture.p03core;
import lombok.Setter;
@Setter
public class MyServlet {
MyDao dao = new MyDao();
public void doGet() {
// 0. 사전 작업
// 2. request handle
// 3. business logic
dao.update();
// 4. add attribute
// 5. forward / redirect
}
}
객체를 만들고 값을 할당하는 일을 스프링이 대신해주게 하는 행동을 확인한다~
객체 생성은 원래 우리가 0. 사전작업에 가깝게 넣고 봤는데,
이제 그냥 일반 class에 넣고작동시켜도 충분히 가능하다.
스프링이 설명서를 읽고 객체를 만들었다! 라는 의미
= p04core =
< App.java >
package lecture.p04core;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import lombok.extern.log4j.Log4j;
@Log4j
public class App {
public static void main(String[] args) {
String contextFilePath = "lecture/p04core/context.xml";
ApplicationContext context = new ClassPathXmlApplicationContext(contextFilePath);
MyServlet s1 = context.getBean(MyServlet.class);
MyDao d1 = context.getBean(MyDao.class);
log.warn(s1);
log.warn(d1);
log.warn(s1.getMyDao());
}
}
< MyDao.java >
package lecture.p04core;
public class MyDao {
}
< MyServlet.java >
package lecture.p04core;
import lombok.Getter;
import lombok.Setter;
@Setter
@Getter
public class MyServlet {
private MyDao myDao;
}
< context.xml >
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean class="lecture.p04core.MyServlet">
<property name="myDao" ref="myDao"></property>
</bean>
<bean id="myDao" class="lecture.p04core.MyDao"></bean>
//id나 name으로 둘다 쓰인다.
</beans>
Dependency injection (의존성 주입)
컨트롤을 우리가 직접하지 않고, 스프링에게넘겨줘서 inversion of control이라는 용어를 쓴다.
객체를 만들고 할당하는 일을 직접 하지 않고, 그 제어를 스프링에게 넘긴다 라는 의미로 ioc라고하며,
제어의 역전, 제어의 반전이라고 직역을 한다~
마이 서블릿이 가지는 dao와, 실제 dao가 객체값이 같은 것을 확인할 수 있다.
= p05coreExcercise =
< App.java >
package lecture.p05coreExcercise;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import lombok.extern.log4j.Log4j;
@Log4j
public class App {
public static void main(String[] args) {
String configLocation = "lecture/p05coreExcercise/context.xml";
ApplicationContext context = new ClassPathXmlApplicationContext(configLocation);
Computer c1 = context.getBean(Computer.class);
// Memory m1 = context.getBean(Memory.class);
Memory m1 = (Memory) context.getBean("memory");
log.warn(c1);
log.warn(m1);
log.warn(c1.getMemory());
}
}
< computer.java >
package lecture.p05coreExcercise;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class Computer {
private Memory memory;
}
< Memory.java >
package lecture.p05coreExcercise;
public class Memory {
}
< context.xml >
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- Computer 빈, Memory 빈 만들기 -->
<!-- Computer 빈에 Memory 빈 주입 -->
<!-- 위에서 name memory는 메소드 setmemory와같다 -->
<bean class="lecture.p05coreExcercise.Computer">
<property name="memory" ref="memory"></property>
</bean>
<bean id="memory" class="lecture.p05coreExcercise.Memory"></bean>
</beans>
클래스로도 꺼낼 수 있고, 메모리라는 빈으로 넣어서 쓸 수 있다. 이름을 꺼낼때는 형변환을 해줘야하거나,
다른 메소드를 활용해야한다.
null값이 아닌지 확인해보면서, 두개의 객체가 잘 생성되었는지 확인해봐야한다.
전반적으로 객체를 만들어보고, 객체가 잘 생성되었는지 확인해보는 업무를 배웠다.
이면에 항상 일어나는 일이니까 알아보는거고, 간단한 어노테이션을 사용해서 이런 일들이 일어나게하는건
내일 수업 때 진행하기로~
'수업 복습하기 > Spring' 카테고리의 다른 글
day 06 - Spring 05 + 마무리 (0) | 2022.02.07 |
---|---|
Day 05 - Spring04 + TimeMapper -> mapper.xml/.java (0) | 2022.02.03 |
Day04 - Spring03 + TimeMapper (0) | 2021.12.30 |
Day 03 - spring02 + 아이콘 사용하기 (0) | 2021.12.27 |
Day 02 - lombok02 + spring01 (0) | 2021.12.24 |