이건 최근에 제가 포트폴리오 만드는 이슈도 좀 잇어서 기억하고요.
2023.04.27 - [웹/Spring vue 웹 개발] - spring vue 연동 게시판 03-deadlock 현상 발생

spring vue 연동 게시판 03-deadlock 현상 발생

음 지금 다 완성했는데 몇가지 문제가 좀 발생했어요 오류코드는 아래에 있습니다. 게시판글 등록이랑 데이터들은 잘 조회되는데 디테일 조회시 jdbc에서 db가 끊기는 현상이 발생합니다. 그래서

kwaksh2319.tistory.com

음 스레드는 이전에 정리한글이 있어서 
2020.12.13 - [프로그래밍언어/JAVA] - Thread

<JAVA>Thread

Os 수업을 들었다면 알거라고 생각하지만 한번더 정리하는 개념으로 Process 실행중인 프로그램OS로부터 메모리르 할당 받음 Thread실제 프로그램이 수행되는 작업의 최소 단위하나의 프로세스에는

kwaksh2319.tistory.com

웹방식 자체가 단일 스레드로 돌아갈수 없는 구조입니다.
 
쉽게 설명하면 
단일 스레드 환경이고 10명의 사람이 로그인 접속을 한다고 가정하겠습니다,
어떤 특정 한사람이 로그인 로직 중에 문제가 발생해서 스레드의 대기 상태가 걸리면
다른 9명의 사람들은 계속해서 대기상태에 있어야합니다. 그리고 실제로 많은 사람의 숫자들이 접속한다고 가정하면 그 처리를 하나씩 해줘야하니 엄청나게 느리겠죠.
 
아래 그림은 스레드를 200개를 가지고 있는 스레드 풀입니다. 즉 요청자가 발생전에는 대기하고 있다가 누군가 요청을 시도하면 그 숫자에 맞춰서 여러요청을 동시에 실행할수 잇도록 실행해줍니다.
 
 

이미지 출처 
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 강의

웹 애플리케이션을 개발할 때 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 MVC의 핵심 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., -

www.inflearn.com

' > Spring' 카테고리의 다른 글

Spring 프로젝트 시작하기방법  (0) 2023.06.20
서버사이드 렌더링, 클라이언트 렌더링  (0) 2023.06.19
서블릿  (0) 2023.06.19
web server , was(web application server) 차이  (0) 2023.06.19
웹 로드맵  (0) 2022.09.13

크롬이나 요즘 브라우져에 f12를 누르고 텝에 네트워크를 클릭하면

 이런식으로 http 통신 내용들을 볼수 잇습니다.
 
서블릿의 역할은 저 녹색부분을 제외하고 전부 자동화 해줍니다.
즉 스프링에서는 비지니스 로직에 집중하여 생산성이 높게 진화가 된겁니다.

개발자들의 어려운걸 해결해주기 위해서 탄생한 서블릿
 
이미지 출처 링크:
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 강의

웹 애플리케이션을 개발할 때 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 MVC의 핵심 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., -

www.inflearn.com

 
기본적인 웹 실행 구조

이미지 출처 링크:
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 강의

웹 애플리케이션을 개발할 때 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 MVC의 핵심 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., -

www.inflearn.com

예시)

이미지 출처 링크:
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 강의

웹 애플리케이션을 개발할 때 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 MVC의 핵심 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., -

www.inflearn.com

서블릿 컨테이너는 객체 생성,호출, 초기화,종료해주는 생명주기 관리 
싱글톤으로 관리
싱글톤으로 하는 이유
 
1.고객의 요청이 올떄 마다 계속 객체 생성은 비효율적
2.최초 로딩시점에 서블릿 객체를 미리 만들어두고 재활용
3.모든 고객 요청은 동일한 서블릿 객체 인스턴스에 접근 
4.공유 변수 사용주의
5. 서블릿 컨테이너 종료시 함께 종료
 
작년에 공부했던건데 기억에 사라진게 있네요 
복습 중요하네요 ㅠ 
 
 
 

' > Spring' 카테고리의 다른 글

서버사이드 렌더링, 클라이언트 렌더링  (0) 2023.06.19
쓰레드  (0) 2023.06.19
web server , was(web application server) 차이  (0) 2023.06.19
웹 로드맵  (0) 2022.09.13
WebSecurityConfigurerAdapter 사용 불가  (0) 2022.09.01

web server

http 기반으로 동작

정적 리소스 제공, 기타 부가기능

정적 html, css, js,이미지,영상

예) nginx, apache

 

was(web application server)

http 기반 으로 동작

웹서버 기능 포함+ (정적 리소스 제공가능)

프로그램 코드를 실행해서 애플리케이션 로직 수행

동적 html, http api(json)

서블릿, 스프링mvc

예) tomcat,jetty,undertow

 

후기

알고 있는 내용이었지만 다시한번 정리하는 좋은 기회가 되었습니다.

 

' > Spring' 카테고리의 다른 글

쓰레드  (0) 2023.06.19
서블릿  (0) 2023.06.19
웹 로드맵  (0) 2022.09.13
WebSecurityConfigurerAdapter 사용 불가  (0) 2022.09.01
junit5 >> MockitoAnnotations.initMocks 사용법  (0) 2022.08.17

https://roadmap.sh/backend

 

Developer Roadmaps

Community driven roadmaps, articles, guides, quizzes, tips and resources for developers to learn from, identify their career paths, know what they don't know, find out the knowledge gaps, learn and improve.

roadmap.sh

https://roadmap.sh/frontend

 

Developer Roadmaps

Community driven roadmaps, articles, guides, quizzes, tips and resources for developers to learn from, identify their career paths, know what they don't know, find out the knowledge gaps, learn and improve.

roadmap.sh

백엔드,프론트엔드 

WebSecurityConfigurerAdapter 사용 불가 현상

Spring 5.7버전 이상부터는 사용 불가하다고 합니다.

https://spring.io/blog/2022/02/21/spring-security-without-the-websecurityconfigureradapter

 

Spring Security without the WebSecurityConfigurerAdapter

<p>In Spring Security 5.7.0-M2 we <a href="https://github.com/spring-projects/spring-security/issues/10822">deprecated</a> the <code>WebSecurityConfigurerAdapter</code>, as we encourage users to move towards a component-based security configuration.</p> <p

spring.io

그래서 

간단하게 configure 함수 오버라이당 했던 방식으로 간단하게 보여드리겠습니다. 

변경 전

@Configuration
@EnableWebSecurity
public class SecurityJavaConfig extends WebSecurityConfigurerAdapter
{
	@Override
    protected void configure(HttpSecurity http){
		 http.formLogin().disable();
    }
}

변경후 

@Configuration
@EnableWebSecurity
public class SecurityJavaConfig  {
    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http.formLogin().disable();
        return http.build();
    }
}

WebSecurityConfigurerAdapter 상속 받은 configure 오버라이딩 된 함수 대신해서 WebSceurtyConfiguration에서 제공하는 filterChain 함수를 사용합니다 대신 return으로 항상 http를 빌드해줍니다. (http.build())

이상태로 junit5에서 사용불가하다 

그래서 동일시 사용하는 방법은 아래 그림과 같다.

https://www.arhohuttunen.com/junit-5-mockito/

 

Using Mockito With JUnit 5 | Arho Huttunen

Learn how to use the Mockito mocking framework with JUnit 5. Learn both the test framework independent way, and using the Mockito JUnit 5 extension.

www.arhohuttunen.com

 

httpie '<' The operator is reserved for future use.

 

인텔리제이에서 터미널에서 httpie 사용중에 특정 json데이터 입력시 발생 에러였는데요

 

ex)

http PATCH localhost:8080/shops/1/items < items.json

'<' 연산자는 나중에 사용하도록 예약되어 있습니다. 라는 에러 발생

https://stackoverflow.com/questions/2148746/the-operator-is-reserved-for-future-use

 

The '<' operator is reserved for future use

I am using PowerShell and am trying to run the following command: .\test_cfdp.exe < test.full | tee test.log test.full is a script that mimics command line inputs to test_cfdp.exe. However, I...

stackoverflow.com

 

해결법은 

cmd /c 'http PATCH localhost:8080/shops/1/items < items.json'

파워쉘로 연결된 상태여서 그런것 같습니다.

junit4

@Test(expected=dataNotFoundClass)
public void notExisted()
{
    dataService.getdata(키값)
}

junit 5

 @Test
public void notExisted()
{
      assertThrows(dataNotFoundClass.class,()->dataService.getdata(키값));
}

 

음 뭔가 junit5 직관적이진 않네요 ㅎ 

+ Recent posts