Service도 xml로 설정된 곳이 아닌 어노테이션을 이용해서 이어줄 수 있다. 먼저 기존에 id noticeService 자체를 주석해준다. 지금까진 class에 포함해 bean객체로 컨테이너 속에 넣고 사용해왔지만 이번에는 컴포넌트로 변경해야 하기 때문이다. 또 context:component-scan을 이용해 꼭 찾아봐야할 경로를 적어준다. 적지않고 사용해도 되지만 그럼 시간이 많이 소요되니 service를 찾을 때에는 꼭 적어준다. service로 두려는 클래스에 컴포넌트 @Component를 사용한다. 이렇게 Component라는 이름으로 사용해도 좋지만 상황에 따라 분류할 수 있도록 별도의 다른 이름의 컴포넌트들이 존재한다 @Service , @Controller, @Repository가 그..
이전에 dispatcher-servlet.xml에 모든 설정을 몰아 넣어 사용했다. 이건 잘못된 방식은 아니지만, 여러명이서 작업을 할 때에는 누군가 xml을 건드릴 일이생기거나 할때 기다림이 발생 할 수 있다. 그런 것을 동기화라고 한다. 그래서 설정을 분리하고 그 설정에 적절한 네임을 붙여주면 작업이 편해질 수 있는데 먼저 설정을 3개의 파일로 나누어주자. 나는 이렇게 3개의 설정으로 나누어 줬다 권한설정인 security는 아직 설정 전이고 service는 service에 관련된 것들, servlet은 껍데기를 형성해주는 파일이다. 파일을 만들어 줬다면 기존에 servlet을 설정했던 web.xml로 가보자 http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http..
현재 이렇게 db 정보를 그대로 박아두면 만약 웹사이트를 배포 했을 때에 자바코드가 아닌 바이너리코드로 배포되기 때문에 비밀번호가 바꿔었을 때에도 다시 입력해서 재배포를 해줘야하는 상황이 된다. 또한 데이터베이스의 위치가 바뀔경우에도 또 소스코드를 재배포해야한다. 이런 경우는 합당하지 않은 것 같다. 그래서 이런 변경해야되는 부분들은 xml에 넣고 di로 해서 사용해야한다. 이렇게 정보를 하나하나 입력해둔것을 dataSource라는 객체를 사용해서 설정한건데 상단에 보면 java.sql.Datasource를 볼 수 있고 확인해보면 인터페이스 형태라는 것을 알 수 있다. 그럼 객체를 설정해줘야 한다는 것을 알 수 있다. 그렇기에 set해주기위해 setter를 만들어 줬고 getList 메소드에서는 data..
스프링객체 분리하기 이전 디스패처에서 service 객체를 set할 수 있게 했다. 이렇게 할 경우의 문제는 결합력이 너무 높다는 것이다. 한 서비를 객체를 바꾸게 되면 controller에서 set했던 값을 바꿔줘야하니 여러 코드를 바꿔줘야만 한다. 이런 문제를 일으키지 않기 위해서 우린 interface를 설정 해주려한다. 전에 사용했던 서비스 객체의 메소드의 네임을 넣어줬다 인터페이스 명도 이전에 사용했던 네임을 그대로 넣어줬다. 그 뒤에 이전에 사용한 NoticeService클래스의 클래스명을 JdbcNoticeService로 바꿔줬다. 네임을 바꿔주고 인터페이스를 상속했을 뿐이다 이제 xml로 가보자 여기서 내가 바꿔준 것은 원래 bean 객체로 설정한 서비스의 경로만 바꿔줬다 여기서 id값은 ..
먼저 오라클 데이터베이스 연결을 위해서 JDBC를 POM에 옮겨 줘야한다. 나는 mavenRepository 사이트를 이용해서 com.oracle.database.jdbc ojdbc8 21.1.0.0 이걸 pom.xml에 옮겨줬다. 이걸로 준비를 끝났으니 서비스객체를 만들어보려고 하는데 dispatcher에 컨트롤러 bean을 만들어 ioc컨테이너에 넣었듯이 이번에 service객체 또한 같은 방식을 사용하려 한다. 이렇게 경로를 class로 넣어준다. 그럼 ioc컨테이너에 서비스 객체가 마련되었으니 컨트롤러에서 이걸 불러올 수 있게 설정해준다. 사진처럼 이 객체를 listController에 연결해주었다. 프로퍼티의 name은 setter일 뿐이니 컨트롤러에서 세터를 마련해줘야만 한다. 세터를 마련해주..
이 전글에 tiles는 페이지가 늘어날때마다 새로 tiles 값들을 추가해줘야 했다. 그런 불편함을 잡기 위해 와일드 카드(*)를 사용해보려 한다 굉장히 간단하다 와일드 카드(*)가 사용되는 곳 바로 그 단어를 put-attribute에 {1} 이렇게 표시할 수 있다. 만약 url로 /notice/list 라고 들어온다면 {1}은 list가 된다. 또 2개 이상으로 사용하고 싶다면 tiles name에 notice.*.* 이라고 하나 더 추가해주고 {1} {2} 형식으로 순차적으로 값을 넣어주면 된다.
간단하게 Tiles의 경우 Dispatcher 서블릿에 이렇게 설정이 가능한데 주목할 곳은 기존에 이미 Resolver 설정이 되어있기 때문에 property로 order를 1로 두어 우선순위를 정해준다. 주의 : 스프링의 버전에 따라 tiles도 최신버전으로 바꿔야 할 수 있다. 또 jsp에 뿌려줄때에는 ignore를 true로 두면 해당 jsp에 내용이 없을 경우 오류가 나지 않는다. 만약 내용이 있는데 나오지 않는다면 경로가 틀렸을 수 있으니 꼭 확인해볼것. jstl에 대한 오류 또한 날 수 있으니 추가해준다. (tiles 의 태그와 연관이 있는 듯 하다.) jsp tiles.xml pom.xml 4.0.0 com.newenw webpj 0.0.1-SNAPSHOT war org.springframe..
- Total
- Today
- Yesterday
- 로그인
- exception
- 향해99
- rejectValue
- 인터셉터
- JPA
- React
- jpa api
- 백엔드 개발자 역량
- 향해플러스백엔드
- Intercepter
- HTTP
- 백엔드 개발자 공부
- 향해플러스
- 리터럴
- 항해99
- 예외처리
- 항해플러스
- 스프링부트
- 스프링공부
- thymleaf
- hypertexttransferprotocol
- react실행
- 컨트
- filter
- SpringBoot
- ArgumentResolver
- Java
- BindingResult
- reject
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |