본문 바로가기
spring

spring pom.xml

by improve 2024. 2. 28.

스프링 빈 객체의 초기화와 소멸

어노테이션 방식

인터페이스를 구현하여 

초기화와 소멸 방식

@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