개발자의 공부방/스프링 23

스프링 기초] 스프링과 스프링부트의 차이점.

구글에 스프링과 스프링부트의 차이점을 검색하면 정말 많은 학도들의 글이 나옵니다. 현업에서 개발할 때 스프링을 쓰기는 했으나 과연 제가 스프링의 개념과 목적을 얼마나 알고 쓰는지에 대해서 고민했습니다. 이때 좋은 강의를 보고 나름대로 하나하나 천천히 정리해보려고 합니다. 스프링과 스프링부트의 차이점은 무엇인가? 여러 소스를 들어서 예를 꺼내면 다소 글이 길어지겠지만 먼저 간단한 개념을 잡고 출발하겠습니다. 스프링 핵심기술 : 스프링 DI 컨테이너, AOP, 이벤트, 기타.. 웹 기술 : 스프링 MVC, 스프링 WebFlux 데이터 접근 기술, 기술 통합, 테스트, 언어 스프링부트 스프링을 편리하게 사용할 수 있도록 지원해주는 껍데기(?) 단독으로 실행할 수 있는 애플리케이션을 쉽게 생성. Tomcat 같..

스프링] 에러 : java.sql.SQLException: Connection is read-only. Queries leading to data modification are not allowed; 해결법 feat. 스프링부트

현재 제목과 같은 에러가 발생했다. UPDATE 문을 실행하면 저렇게 에러가 나는데... 구글에 검색을 하면 스프링프레임워크를 세팅할 때 read-only 어쩌고... 이러한 해결법이 나오는데.. 결과적으로 대부분이 스프링 xml 셋팅을 얘기하고 있다. (application-context.xml...) 스프링부트 + mybatis + mysql + gradle 로 환경셋팅이 되어 있는 나는 전혀 xml 설정이 없다... 무튼 해결방법은... transactional 을 통한 에러였고 readOnly 라는 것을 보았기에... 어노테이션 @Transactional 을 선언하고 readOnly = false 를 해줬다. 다행히 위와 같은 에러는 더 이상 발생되지는 않았다!

스프링부트] 목록 리스트

Controller @RequestMapping(value = "/admin/company/companyRegistration", method = RequestMethod.GET) public String companyList(Model model) { log.debug("a1 :"+companyService.getCompanySelectNameList(companyVO)); model.addAttribute("companySelectNameList", companyService.getCompanySelectNameList(companyVO)); return "/admin/company/companyRegistrationList"; } 안나왔던 이유 String companyList 메소드에 url 경로..

스프링] gradle @Slf4j 설정 feat. test 에서 자동임포트 안뜰 때

스프링부트와 gradle 그레이들을 사용하는 프로젝트를 진행 중입니다. @Slf4j 어노테이션은 롬복에서 지원해주는 로깅 어노테이션으로 많이들 사용합니다. 그런데 TEST 에서 사용을 하려고 하면 @Slf4j 가 자동으로 임포트 목록에 뜨지 않는 경우가 있습니다. 원인은 바로 그레이들 설정 때문입니다. 메이븐 같은 경우에는 라는 범위 지정이 있는데 반면 그레이들은 compile, compileonly, annotationProcessor 등으로 나눠져있습니다. //annotationProcessor 'org.projectlombok:lombok' compile('org.projectlombok:lombok') 처음에는 annotationProcessor 로 되어 있었는데 이를 compile 로 변경하니깐..

스프링] 의존성 주입 방법 여러가지.

의존성 주입에 대해 여러가지 방법이 있다는 걸 처음 알았다. 1) 첫번째 방법 Field 에 @Autowired 를 명시해서 의존성을 주입하는 방법이 있다. 근데 사진상으로는 에러가 난다. 이유는 단순하다. final 을 붙였기 때문! final을 없애면 정상적으로 애플리케이션이 동작한다. 2) 두번째 방법 두번째 방법은 레퍼런스에서 권장하고 있다는 방법이다. 바로 생성자를 이용한 방법인데, 아직 스프링에 대해서 자세하게 알지못하다보니 생성자를 이용한 방법이 좋다 나쁘다를 판단하기 어려운 것 같다. 또한 실무에서는 @Autowired 어노테이션을 사용하는 방법을 많이 써서 생성자 방법이 있는지도 몰랐.......공부해야한다....ㅠㅠ 3) 세번째 방법 Setter 를 이용한 방법이다. 백기선님의 무료강좌..

스프링부트 에러] 에러 모음.

Caused by: java.sql.SQLDataException: data exception: invalid character value for cast ==> insert 하는 컬럼의 위치가 잘못됐다. Caused by: java.sql.SQLSyntaxErrorException: row column count mismatch ==> 컬럼을 추가했는데 insert 되는 곧에 추가한 컬럼을 포함하지 않고 insert 를 하려고 하니깐 나오는 에러 Caused by: java.lang.IllegalArgumentException: Validation failed for query for method public abstract java.util.Collection org.springframework.sa..