스프링이 다른 프레임워크와 다른점은 기능이 아니라 OOP설계를 위한 프레임워크다
OOP설계 ->컨텍스트 -> ApplicationContext
스프링코어 위에 여러개를 얹어서 개발하는 시스템(마이바티스던 MVC던..)
->굉장히 유연하다는 장점이 있지만 설정이 복잡하다는 단점이 있다
-> 그래서 발전된것이 스프링 부트이다.
스프링에서 제일 유명했던 책은 스프링 인 액션이다
스프링은 간소하게 어플리케이션을 만들자는 취지로 만들어졌는데 여러가지를 지원하다보니 복잡해지고 힘들어진것
->하지만 우리나라는 전자정부프레임워크를 채택해서 어쩔수없다..
면접문제1번은
스프링썼을때 장점은?
의존성주입에 대해 설명해보세요 ->new라는 코드가 있으면 개방과 폐쇄의 원칙을 반대하기때문에 어떻게던 외부에서
객체생성을 해서 넣어주는것->인터페이스의 활용을 극대화하는것
인터페이스의 진짜 목적은 실체가 뭔지 모르게하는것이다~ (실제객체를 감추는것)
DB에 대해서....
커넥션풀 / 쓰레드풀이라는것이 있다
톰캣도 일종의 쓰레드풀이다.
인풋스트림, 아웃풋스트림을 하는동아 ㄴ다른사람들은 작업을 못한다
그래서 이것을 해결하기위해 이용했던게 멀티스레드기법이다.
쓰레드를 그때그때만들면 너무 무거운작업이니까
미리스레드를만들어놓고 사용하고 반납하고를 반납한다 =>이게 스레드풀방식(톰캣)
멀티스레드로 100명이 접속하는데 커넥션풀에서 사용할수 있는 인원수가 더 적으면
병목현상이 일어난다.
커넥션 릭(leak) ->메모리가 새는 현상
커넥션풀 빌려주고 반납이안되면(커넥션 릭이 발생하면) 서버가 결국뻗는다...
db를 설계할때 원칙
1. 최대한 빠르게 처리하고 반납되어야한다(SQL의 속도가 중요하다는것!)
2. 안전해야한다. (개발자들이 트라이 캐치 파이널리로 제대로 코드를 작성하지 않아도 마이바티스는 자동으로 이것을 처리해주기 때문에 안전하다./ 다만 속도는 약간 떨어진다)
에러와 익셉션의 차이
-> 에러 : 이게 발생하면 개발자가 손쓸 수 없는것은 에러,
-> 익셉션 : 개발자가 처리가능한것