목차
1. pom.xml 업데이트
1-1. java version upgrade
...
<properties>
<java-version>17</java-version>
...
</properties>
...
<build>
<plugins>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<source>17</source>
<target>17</target>
<compilerArgument>-Xlint:all</compilerArgument>
<showWarnings>true</showWarnings>
<showDeprecation>true</showDeprecation>
</configuration>
</plugin>
</plugins>
</build>
1-2. spring upgrade
<org.springframework-version>5.3.39</org.springframework-version>
1-3. spring-mvc,jdbc,aop,test,tx 추가
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${org.springframework-version}</version>
</dependency>
1-4. aspectj 추가(scope 지우기)
<!-- AspectJ -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${org.aspectj-version}</version>
</dependency>
<!-- aspectjweaver -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${org.aspectj-version}</version>
</dependency>
1-5. Servlet Upgrade
<!-- Servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
1-6. JUnit verion 업그레이드
<!-- Test -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<scope>test</scope>
</dependency>
1-7. lombok 추가
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.34</version>
<scope>provided</scope>
</dependency>
1-8. h2 추가 (1.4.200)
<!-- h2 -->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>2.3.232</version>
<scope>test</scope>
</dependency>
1-9. dbcp 추가
<!-- commons-dbcp -->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
->maven update
2. web.xml 없애기
2-1. pom.xml에 다음 추가
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
->maven update
->서버가 작동이 안된다면 Tomcat ver 9.x 로 업그레이드
2-2. WebConfig.java
package com.gimhae.day54.config;
public class WebConfig extends AbstractAnnotationConfigDispatcherServletInitializer{
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[] {RootConfig.class};
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[] {ServletConfig.class};
}
@Override
protected String[] getServletMappings() {
return new String[] {"/"};
}
}
2-3. ServletConfig.java
package com.gimhae.day54.config;
@EnableWebMvc
@ComponentScan(basePackages = {"com.gimhae.day54"})
public class ServletConfig implements WebMvcConfigurer{
@Override
public void configureViewResolvers(ViewResolverRegistry reg) {
InternalResourceViewResolver viewResolver=new InternalResourceViewResolver();
viewResolver.setPrefix("/WEB-INF/views/");
viewResolver.setSuffix(".jsp");
reg.viewResolver(viewResolver);
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry reg) {
reg.addResourceHandler("/resources/**")
.addResourceLocations("/resources/");
}
}
2-4. RootConfig.java
package com.gimhae.day54.config;
import javax.sql.DataSource;
@Configuration
@ComponentScan(basePackages = {"com.gimhae.day54"})
public class RootConfig {
// dataSource Bean 만들기
@Bean
public DataSource dataSource() {
BasicDataSource dataSource=new BasicDataSource();
dataSource.setDriverClassName("org.h2.Driver");
dataSource.setUrl("jdbc:h2:tcp://localhost/~/xe");
dataSource.setUsername("root");
dataSource.setPassword("");
return dataSource;
}
// jdbcTemplate 만들기
@Bean
public JdbcTemplate jdbcTemplate() {
JdbcTemplate template=new JdbcTemplate();
template.setDataSource(dataSource());
return template;
}
// transactionManager 만들기
@Bean
public TransactionManager transactionManager() {
DataSourceTransactionManager transaction=new DataSourceTransactionManager(dataSource());
return transaction;
}
@Bean
public SqlSessionFactory sqlSessionFactory() throws Exception {
SqlSessionFactoryBean factory=new SqlSessionFactoryBean();
factory.setDataSource(dataSource());
return factory.getObject();
}
}
2-5. TestConfig
package com.gimhae.day54.config;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {RootConfig.class})
public class TestConfig {
@Autowired
DataSource dataSource;
@Autowired
JdbcTemplate jdbcTemplate;
@Test
public void testDataSource() {
assertNotNull(dataSource);
}
@Test
public void testJdbcTemplate() {
assertNotNull(jdbcTemplate);
}
}
3. MyBatis 사용하기
3-1. pom.xml 라이브러리 추가
<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<!-- mybatis-spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.6</version>
</dependency>
4. Model 만들기
4-1. DeptVo
package com.gimhae.day54.model;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class DeptVo {
int deptno;
String dname,loc;
}
4-2. DeptDao
package com.gimhae.day54.model;
@Mapper
public interface DeptDao {
@Select("SELECT * FROM DEPT ORDER BY DEPTNO")
List<DeptVo> pullList();
@Insert("INSERT INTO DEPT (DEPTNO,DNAME,LOC) VALUES (#{deptno},#{dname},#{loc})")
void addList(DeptVo bean);
@Select("SELECT * FROM DEPT WHERE DEPTNO=#{int}")
DeptVo getList(int deptno);
@Update("UPDATE DEPT SET DNAME=#{dname},LOC=#{loc} WHERE DEPTNO=#{deptno}")
int setList(DeptVo bean);
@Delete("DELETE FROM DEPT WHERE DEPTNO=#{int}")
int rmList(int deptno);
}
5. HomeController
package com.gimhae.day54;
@Controller
public class HomeController {
@Autowired
DeptDao deptDao;
public HomeController() {
System.out.println("new Controller...");
}
@RequestMapping(value = "/", method = RequestMethod.GET)
public ResponseEntity<?> home() {
return ResponseEntity.ok(deptDao.getList());
}
@PostMapping("/")
public ResponseEntity<?> add(@ModelAttribute DeptVo bean){
deptDao.insert(bean);
return ResponseEntity.ok().build();
}
}
6. pom.xml - jacksonbind 추가
<!-- jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.15.2</version>
</dependency>
7. Aop
7-1. DeptAdvice
7-2. RootConfig
'100일 챌린지 > 빅데이터기반 인공지능 융합 서비스 개발자' 카테고리의 다른 글
service-api (0) | 2024.10.17 |
---|---|
Day 48 - Spring 4.x & MyBatis Lombok 사용하기 (0) | 2024.10.11 |
Day 53 - Spring 5.x guest file upload/download 프로그램 만들기 - (1) | 2024.10.11 |
Day 49 - Spring 5.x CRUD 프로그램 만들기 (0) | 2024.10.08 |
Day 47 - (0) | 2024.10.04 |