스프링 빈 객체의 초기화와 소멸
어노테이션 방식
인터페이스를 구현하여
초기화와 소멸 방식
@Service
public class MemberService implements InitializingBean, DisposableBean {
@Autowired
MemberRepository memberRepository;
String str;
@Override
public void afterPropertiesSet() throws Exception {
str = "jdbc:mysql://192.168.0.38"; // 긴 문자열을 재정의 할때
System.out.println("IOC 컨테이너 들어갈때..");
}
@Override //
public void destroy() throws Exception {
System.out.println("IOC컨테이너가 없어질때..");
}
●pom.xml에 라이브러리 추가를 해주면 풀 커넥션 방법을 사용할 수 있다.
아래가 이에 대한 순서 이다.
pom.xml 에 추가를 해주면 된다.
https://mangkyu.tistory.com/22
[Spring] Mybatis, Datasource 설정
이번 단계에서는 Mybatis(마이 바티스)와 DataSource(데이터소스)에 대해서 설정해보도록 하겠습니다. Mybatis는 대표적인 Object Mapping 기술 중 하나인데 Object Mapping에 대해서 모르신다면 여기를 참고해
mangkyu.tistory.com
이 방법을 참고 한다.
jbdc 라이브러리 추가
https://mvnrepository.com/artifact/org.apache.commons/commons-dbcp2/2.11.0
pom.xml에 mysql 추가를 해준다.
https://mvnrepository.com/artifact/mysql/mysql-connector-
mybatis 라이브러리 추가
https://mvnrepository.com/artifact/org.mybatis/mybatis/3.5.15
mybatis-spring 추가
https://mvnrepository.com/artifact/org.mybatis/mybatis-spring/3.0.3
jdbc-spring 추가
https://mvnrepository.com/artifact/org.springframework/spring-jdbc/6.1.4
●pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>ex03</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>6.1.4</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.28</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
<version>2.11.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>3.0.3</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.15</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>6.1.4</version>
</dependency>
</dependencies>
</project>
mapper 로케이션을 만들어 준다.
https://mybatis.org/mybatis-3/ko/configuration.html
mybatis – 마이바티스 3 | 매퍼 설정
매퍼 설정 마이바티스 XML 설정파일은 다양한 설정과 프로퍼티를 가진다. 문서의 구조는 다음과 같다.: configuration properties 이 설정은 외부에 옮길 수 있다. 자바 프로퍼티 파일 인스턴스에 설정할
mybatis.org
resources 파일에
directory 로 sql파일을 만들고
file 로 member.xml을 만든다.
●Myconf
package org.example.conf;
import org.apache.commons.dbcp2.BasicDataSource;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import javax.sql.DataSource;
@Configuration
@ComponentScan("org.example.member")
public class MyConf {
// 커넥션 풀 생성
@Bean(destroyMethod = "close")
public DataSource dataSource(){
BasicDataSource bds = new BasicDataSource();
bds.setInitialSize(10); // 커넥을 몇개 할거냐 안적어도 기본으로 10개 연결된다.
bds.setDriverClassName("com.mysql.cj.jdbc.Driver");
//교수님 컴퓨터 ip에 데이터 베이스
bds.setUrl("jdbc:mysql://192.168.0.38/PMH");
bds.setUsername("pmh");
bds.setPassword("1234");
return bds;
}
// sqlfactory 객체 생성
@Bean
public SqlSessionFactory sqlSessionFactoryBean() throws Exception {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource());
sqlSessionFactoryBean.setMapperLocations(
new PathMatchingResourcePatternResolver().getResources("classpath*:sql/*.xml"));
return sqlSessionFactoryBean.getObject();
}
//sql 문장 설정
@Bean
public SqlSession sqlSession() throws Exception{
return new SqlSessionTemplate(sqlSessionFactoryBean());
}
}
이렇게 하면 여러변 sqlconnect을 하지 않아도 된다.
●Main
package org.example;
import org.example.conf.MyConf;
import org.example.member.MemberService;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MyConf.class);
// String str[] = context.getBeanDefinitionNames();
//
// Arrays.stream(str).forEach(s -> System.out.println(s));
MemberService memberService = context.getBean(MemberService.class);
memberService.regist();
context.close();
}
}
컨테이너에 MemberService.class 를 넣어주고
함수 호출 해준다.
●MemberService
package org.example.member;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class MemberService implements InitializingBean, DisposableBean {
@Autowired
MemberRepository memberRepository;
String str;
@Override
public void afterPropertiesSet() throws Exception {
str = "jdbc:mysql://192.168.0.38"; // 긴 문자열을 재정의 할때
System.out.println("IOC 컨테이너 들어갈때..");
}
@Override //
public void destroy() throws Exception {
System.out.println("IOC컨테이너가 없어질때..");
}
public void regist() {
memberRepository.insert();
}
}
객체 생성(@AutoWired) MemberRepostiry를 해준다.
memberRepostory에 있는 함수 호출 해준다.
●MemberRepostory
package org.example.member;
import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
@Repository
public class MemberRepository {
@Autowired
SqlSession sqlSession;
public void insert() {
sqlSession.insert("member.insert");
}
}
Myconf에 있는 SqlSession을 불러 와서 insert를 해준다.
●member.xml
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="member">
<insert id ="insert">
insert into member (email, name) values ('손흥민@naver.com','aaa');
</insert>
</mapper>
insert값을 sql구문으로 넣어주면 데이터값으로 들어가게 된다.
'spring' 카테고리의 다른 글
SPRING HATEOAS/Security == Intercepter (0) | 2024.03.15 |
---|---|
맥북에서 DBeaver spring 으로 연결 (0) | 2024.03.01 |
spring 등록 출력(복습) (0) | 2024.02.27 |
spring 으로 게시판 (0) | 2024.02.23 |
Spring 기초 (0) | 2024.02.22 |