일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 디자인패턴 #싱글톤
- 톰캣
- autocomplete
- spring
- Mockito #Reflection #Sigleton #Test #JUnit
- LiveTemplate
- 외장톰캣
- tomcat
- Spring Framework
- Today
- Total
목록Develop/Spring framework (17)
자라선
@Autowired @Autowired는 스프링의 DI에 사용되는 특별한 어노테이션이다. @Autowired가 붙은 변수가 있으면 테스트 컨텍스트 프레임워크는 변수 타입과 일치하는 컨텍스트 내의 빈을 찾으며 타입이 일치하는 빈이 있으면 변수에 대입해준다. 같은 타입의 빈이 2개이상이면 변수명으로 비교하고, 그마저도 문제있으면 예외를 발생시킨다. 일반적으로 주입을 위해 생성자나 수정자 메소드 같은 메소드가 필요하지만 @Autowired는 필요없이 주입이 가능하다. 또 별도의 타입정보를 이용해 빈을 자동으로 가져올 수 있는데, 이런 방법을 타입에 의한 자동 와이어링이라고 한다. @Autowired private ApplicationContext context; 그런데 위의 경우 applicationCon..
1. 공유 객체로 테스트 JUnit은 각각의 @Test 메소드별로 오브젝트를 만들어 자원을 공유하지 않는다. 하지만 SpringJUnit4ClassRunner를 사용하여 스프링의 확장된 JUnit를 사용하면 @Test 메소드 별로 공유된 객체를 사용할수 있는 기능을 제공해준다. org.springframework spring-context 4.3.20.RELEASE org.springframework spring-test 4.3.20.RELEASE 위와 같은 메이븐을 설정하여 라이브러리 를 받고 작성한다. @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations="/applicationContext.xml") public class ..

1. @Test(Expected=...) 실행결과에 대한 테스트 뿐만이 아닌 에러에 대한 테스트또한 가능하다. 특정 예외처리에 반응하여 아래와 같이 정의할수 있다. @Test(expected=EmptyResultDataAccessException.class) public void getUserFailure() throws SQLException { ... } 위의 코드는 EmptyResultDataAccessException 예외가 나와야지만 해당 테스트가 성공적으로 이루어진다. 2. @Before 테스트할 메소드들의 공통적인 관심사를 따로 추출하여 테스트를 진행할수 있다. @Before 어노테이션을 사용하면 테스트를 진행하기 전에 @Before 메소드 안에있는 기능이 실행하게 된다. private ..

1. JUnit 자바의 테스트 지원도구인 JUnit으로 IoC 테스트 프레임워크이다. 이전에 main메소드로 호출하여 System.out.println() 보다 좀더 편하며 강력한 테스트를 할수 있도록 지원해주는 프레임워크이다. JUnit은 사용하기 위해 아래와 같은 2가지의 조건이 있다. 1. public 접근 제한자만 사용가능 2. @Test 어노테이션으로 사용 @Test public void addAndGet() throws SQLException { ... } 2. Test Code 기존에 main에서는 호출하면서 동시 데이터를 조건절을 사용해 비교하여 System.out.println() 으로 출력하였다. 하지만 일일히 모든 코드를 테스트 하기 위해서 main에서 호출하여 출력하는건 무리가 ..
1. Unit Test 프로그래밍에 있어서 테스트는 절대적인 것이다. 자신이 만든것이 잘 작동하는지 원하는 결과가 나오는지에 대한 확신은 테스트에서 알수있다. 하지만 웹 단위에서 테스트를 진행할시 JSP 로 뷰단에서 값을 입력하여 Controller에 넘기고 Service에서 다시 Dao로 .. 등등 비즈니스 로직과 뷰 를 동시에 테스트해야 하기 때문에 규모가 커지며 원하는 부분 예를 들어 Dao를 테스트할려는데 다른 부분에서 에러가 터져 Dao 하나 테스트할려고 다른 부분도 디버깅해야한다. 이를 방지하기 위해 특정 부분만 테스트 하는것을 Unit Test (단위 테스트)라 불린다. 이전까지 작성 했던 UserDao를 main 메소드에서 실행하는것도 Unit Test라 볼수 있다. 그런데 DB까지..
1. 관심사의 분리 책임이 다른 코드를 분리하여 두개의 클래스로 만듬 같은 클래스내에 공통된 기능을 분리하여 코드를 개선 (리팩토링) 2. 전략 패턴 의존성 주입을 위해 클래스간의 느슨한 인터페이스를 만들어 바뀔 수 있는 쪽의 클래스는 인터페이스를 구현하도록 하고 다른 클래스에서는 인터페이스를 통해 접근 가능토록 만듬. 그렇게 구현하면 인터페이스가 정의되어있는 이상 인터페이스를 통해 접근 가능토록 하였기 때문에 수정할 필요가 없다. 2020/07/31 - [Develop/Spring framework] - [Spring] Object DI [Spring] Object DI 1. Wrong Code DAO(Data Access Object)를 사용하여 코드로 알아보자. 하단의 코드로 main, Dao,..
1. DataSource 당연한 말이지만 mysql-connector 라이브러리가 필요하다.. mysql mysql-connector-java 5.1.19 return DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/toad","test","test"); 위와 같은 DriverManager.getConnection 보다 확장된 개념이 아래의 DataSource 인터페이스이다. 일반적으로 dataSource를 많이 사용한다. SimpleDriverDataSource dataSource = new SimpleDriverDataSource(); dataSource.setDriverClass(com.mysql.jdbc.Driver.class); dataSou..
1. DTD xml 구조의 유효성 체크를 위해 xml 최상단에 작성하는 부문. Spring의 beans 사용시 아래와 같이 작성한다. 2. Schema Spring사용시 beans 이외에도 여러개의 태그들을 지원하고있다. 이때문에 각각 작성해야하는 DTD와 다르게 이와 같은 스키마를 여러개로 구성하고있는 네임스페이스를 받아 beans를 기본 네임스페이스로 구성한다.
1. DI xml 지금까지 의존성 주입을 위해 아래와 같은 DaoFactory 클래스를 만들었는데 매번 의존성 주입할때마다 DI용 클래스를 만들어주기 너무 번거롭고 JVM 특성상 컴파일 후 수정 하려면 재컴파일이 필요하기 때문에 효과적이지 못하다. 하지만 xml 로 의존성을 부여하며 bean를 생성할수 있다. @Configuration public class DaoFactory { @Bean public ConnectionMaker connectionMaker() { return new DConnectionMaker(); } @Bean public UserDao userDao(){ return new UserDao(connectionMaker()); } } 위 코드와 같이 @Configuration 과 ..
1. DI, 의존성 주입 Spring의 대표적인 특징중 가장 기본이 된다는 의존성 주입은 객체에 의존성을 부여함으로써 결합도를 낮추고 응집도를 높이는 것을 말한다. 의존성, 즉 A가 B에게 의존하는 관계다 라고 할때 B가 변화하면 A에게 영향이 간다는 것을 말한다. 쉽게 말해 A가 B를 상속한다면, A가 B의 메소드를 사용할때 B의 메소드가 변경되면 A의 결과값도 변화하며 B의 변경에 따라 A또한 달라질수 있다는 것을 말한다. 하지만 반대로 A가 변화한다 하더라도 B는 아무런 영향에 끼치지 않는다. (JAVA extends와 비슷함) 2. DI 사용 public class UserDao { public void add(User user) throws ClassNotFoundException, SQLE..