/images/avatar.png

스프링 핵심 원리 복습 일지#1

스프링 핵심 원리(기본편) 생성일: 2022년 4월 10일 오후 5:00 0. 객체 지향 설계와 스프링 EJB(Enterprise Java Beans) 트랜잭션이 좋다. 분산 기술이 좋았다. 엔티티빈(JPA ORM)도 가지고 있었다. 비용이 비싸다. 어렵고 복잡하고 느리다(EJB에 의존적으로 코드를 짜야 한다, 컨테이너 띄우는 게 느리다). → 순수하게 자바로 돌아가자. (POJO Plain Old Java Object) 로드존슨이 EJB를 비판하면서 미래 스프링의 기틀을 다져준다. 링킹이 Hibernate 등장. 자바 표준 JPA 구현체로 사용될 수 있다. 스프링 오픈소스 제안 → EJB란 겨울을 넘어 새로운 시작으로 지음 스프링 역사

이펙티브 자바 1~30

이펙티브 자바 Item1. 생성자 대신 정적 팩토리 메서드를 고려하라 정적 팩토리 메서드(static factory method)는 그 클래스의 인스턴스를 반환하는 단순한 정적 메서드이다. 1 2 3 4 5 //생성자 Boolean a = Boolean("true") //정적 팩토리 메서드 Boolean a= Boolean.valueOf("true"); 아래와 같은 장점을 가질 수 있다. 생성자와 달리 이름을 가질 수 있다. 호출될 때마다 인스턴스를 새로 생성하지 않아도 된다. 반환 타입의 하위 타입 객체를 반환할 수 있다. Java8 이전에는 인스턴스에 static 메서드를 선언할 수 없어 Companion class를 만들어 거기에 정의를 했어야 했다.

테스트코드의 Mock, MockBean, Autowired, Spy 이해하기

Test code +mock과 stub의 차이? 행위 검증을 추구한다는 것. mock은 행위검증을 추구하고, stub은 그렇지 않다 1. MockBean, Mock, Autowired target(mock)으로 보면 되겠다! 예를 들어서 controller 생성자에 service가 필요하다고 가정하면, controller(service)이므로 controller에 @InjectMocks, service에 @Mock을 해준다 아래를 보면 알겠지만, MockBean/SpyBean은 Autowired로 기억됨을 알 수 있다 @MockBean: mock객체를 스프링 컨텍스트에 등록 @Autowired: @MockBean으로 등록한 mock 객체를 주입 받아서 의존성 해결 @MockBean의 의존성 주입 Target을 @InjectMocks로 하려고 하면 실패한다 2. SpyBean @SpyBean: spy 객체를 스프링 context에 등록

스프링 mvc 1편 정리

스프링 mvc 1편을 듣고 정리한 내용입니다. 1 Servlet이해하기 서블릿을 자동 등록하는 경우, @ServletComponentScan어노테이션을 사용한다. 예제를 보면서 이해해보자 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 @WebServlet(name = "helloServlet", urlPatterns = "/hello") public class HelloServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("request = " + request); System.out.println("response = " + response); String username = request.

[토비의 스프링] 정리

토비의 스프링 2차 정리 관심사의 분리? 관심이 같은 것끼리는 하나의 객체 안으로 또는 친한 객체로 모이게 하고 관심이 다른 것은 가능한 한 따로 덜어져서 서로 영향을 주지 않도록 분리하는 것 템플릿 메소드 패턴 슈퍼클래스에 기본적인 로직의 흐름을 만들고 기능의 일부를 추상 메소드나 오버라이딩이 가능한 protected 메소드 등으로 만든 뒤 서브 클래스에서 이런 메소드를 필요로 맞게 구현해서 사용 훅메소드? 슈퍼클래스에서 디폴트 기능을 정의해두거나 비워뒀다가 선택적으로 오버라이드할 수 있도록 만들어둔 메소드 팩토리 메소드 패턴 서브클래스에서 구체적인 오브젝트 생성 방법을 결정하게 하는 것

[스프링 인 액션5] Chapter4~6 내용 정리

Chapter4 스프링 시큐리티 사용 예시로 알아보기 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { //HTTP 보안 구성 @Override protected void configure(HttpSecurity http) throws Exception{ http .authorizeRequests() // ExpressionInterceptUrlRegistry 객체 반환 .antMatchers("/design", "/orders") // 이 부분은 .access("hasRole('ROLE_USER')") // 인가 과정 .antMatchers("/", "/**").access("permitAll") // 이 부분은 누구나 접속 가능 .