spring
-
[Spring] AOP (Aspect Oriented Programming)JAVA/SPRING 2023. 6. 11. 15:43
1. AOP 란? 자바에서는 다중 상속이 불가능하여 상속을 통한 공통 메소드를 구성에 한계가 있지만 AOP를 통해 핵심 관심 사항(Core Concern)과 공통 관심 사항(Cross-Cutting Concern)을 분리하고 모듈화 할 수 있습니다. (ex. 주문 API: 핵심 관심사(주문 로직), 공통 관심사(로깅)) AOP의 장점 공통 관심사를 핵심 관심사로부터 분리하여 핵심 로직의 변경없이 공통 관심사를 변경 가능 공통 로직을 적용할 대상을 선택 가능 주요 개념 Aspect: 공통적인 관심사를 모듈화 Target: Aspect가 적용될 대상(메소드, 클래스...) Join point: Aspect가 적용될 수 있는 시점 Advice: Aspect의 기능 Point cut: Advice를 적용할 메소..
-
[Spring] 의존성 주입 (Dependency Injection)JAVA/SPRING 2023. 5. 29. 15:44
1. 의존성 주입이란? 객체를 직접 생성하는 것이 아니라 외부에서 생성된 객체를 주입하는 방법으로 런타임에 의존성을 동적으로 주입하여 결합도를 낮출 수 있습니다. 스프링에서 의존성을 주입할 수 있는 방법으로는 생성자 주입, 필드 주입, 수정자 주입 등의 방법이 존재하고 스프링에서는 생성자 주입을 권장하고 있습니다. 의존성 주입을 통해 클래스들의 결합도를 낮출 수 있고 객체의 유연성을 높이고 테스트 작성이 용이해진다는 장점이 있습니다. public class Person { private Student student; public Person() { this.student = new Student(); } } 위 코드 예시의 문제점은 Person 클래스와 Student클래스가 강한 결합도를 가지고 있습니..
-
[SPRING] SPRING 게시판 (8) - CRUD [게시글 수정]JAVA/SPRING 2020. 3. 18. 15:42
Mapper 작성 ... UPDATE board SET title=#{title}, content=#{content}, editTime=now() WHERE bno=#{bno} Dao 작성 // Dao/BoardDao.java ... //추가 public void updatePosts(BoardVo posts) throws Exception{ sqlSession.update(Namespace + ".update", posts); } 테스트케이스 작성 // test/boardDaoTest.java ... //추가 @Test public void testUpdatePosts() throws Exception{ BoardVo posts = new BoardVo(); posts.setBno(1); posts.s..
-
[SPRING] SRPING 게시판 (7) - CRUD [게시글 삭제]JAVA/SPRING 2020. 3. 16. 16:43
Mapper 작성 // mapper/BoardMapper.xml ... DELETE FROM board WHERE bno = #{bno} Dao 작성 // Dao/BoardDao.java ... //추가 public void deletePosts(int bno) throws Exception{ sqlSession.delete(Namespace + ".delete", bno); } 테스트 케이스 작성 // test/boardDaoTest.java ... //추가 @Test public void testDeletePosts() throws Exception{ int bno = 3; boardDao.deletePosts(bno); } Service 작성 //Service/BoardService.java .....
-
[SPRING] SPRING 게시판 (6) - CRUD [게시물 상세보기]JAVA/SPRING 2020. 3. 16. 16:15
Mapper 작성 // mappers/BoardMapper.xml ... SELECT * FROM board WHERE bno = #{bno} Dao 작성 // Dao/BoardDao.java ... //추가 public BoardVo detailPosts(int bno) throws Exception{ return sqlSession.selectOne(Namespace + ".detail", bno); } 테스트 케이스 작성 // test/boardDaoTest.java ... //추가 @Test public void testDetailPosts() throws Exception{ int bno = 2; BoardVo post = boardDao.detailPosts(bno); logger.info(p..
-
[SPRING] SPRING 게시판 (5) - CRUD [게시물 작성]JAVA/SPRING 2020. 3. 14. 17:27
게시글 작성 View 생성 // views/index.jsp NO TITLE WRITER COUNT DATE ${item.bno} ${item.title} ${item.writer} ${item.count} ${item.createTime} WRITE // views/write.jsp Title Content WRITE Mapper 작성 // mappers/BoardMapper.xml SELECT * FROM board INSERT INTO board (title, content, writer, createTime, editTime) VALUES (#{title}, #{content}, "writer", now(), now()) Dao 작성 // Dao/BoardDao.java ... //추가 publi..
-
[SPRING] SPRING 게시판 (4) - CRUD [게시물 리스트]JAVA/SPRING 2020. 3. 12. 20:43
Service 생성 // Service/BoardService.java @Service public class BoardService { @Inject private BoardDao boardDao; public List getBoardList() throws Exception{ return boardDao.getBoardList(); } } Controller 생성 // Controller/BoardController.java @Controller public class BoardController { @Inject private BoardService boardService; @RequestMapping(value="/boardList", method=RequestMethod.GET) public M..
-
[SPRING] SPRING 게시판 (3) - DB 연동2JAVA/SPRING 2020. 3. 11. 17:16
테이블 생성 패키지 생성 VO 생성 // com.ms.board.Vo/boardVo public class boardVo { private int bno; private String title; private String content; private int count; private String writer; private LocalDate createTime; private LocalDate editTIme; ... //Getter Setter 생략 } SQL 쿼리 작성 SELECT * FROM board DAO 생성 // Dao/BoardDao.java @Repository("BoardDao") public class BoardDao { @Inject private SqlSession sqlSess..