ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 스프링 정리
    spring framework 2020. 7. 9. 01:58

    8

     

    spring은 프로그램에서 사용할 객체를 bean configuration(xml,java파일) 파일에 정의하여 사용한다

     

    빈 객체 생성하기beans.xml에 객체를 생성한다.xml을 로딩하면 xml에 선언된 bean객체가 자동으로 생성된다 (속성으로 lazy - inittrue로 하면 xml로딩시 객체가 생성되지 않고 getbean 메소드를 사용하여 주소값을 해당 타입 클래스 인스턴스에 대입하면 객체가 생성됨)

    추가로 ioc컨테이너가 가지고 있는 객체의 주소값을 받기 위해선 id라는 속성이 필요하다

    getbean메소드를 통해 해당 아이디의 bean객체의 주소값을 가져올 수 있다!

     

    //ioc컨테이너에서id가test1인bean객체의주소값을가져온다
    TestBean t1 = (TestBean)ctx.getBean("test1");
    System.out.println(t1);

    t1에 객체의 주소값이 저장됨

    이때 xml에서 동일한 클래스로 bean을 여러번 선언하였으면 객체는 결국 한번만 생성되고
    모두 같은 주소값을 가지고 있다.

     

    이때 만약 xml에서 bean객체를 설정할때 scope 를 protype으로 설정하면 

    xml 을 로딩할때 객체가 생성되지않고, getbean메서드를 호출할 때 마다 새로운 객체를 생성해서 반환한다.

     

    <bean id = 'test2' class='kr.co.softcampus.beans.TestBean' scope='prototype'/>

     

    ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("kr/co/softcampus/config/beans.xml");
    		
    		//ioc컨테이너에서 id가 test1인 bean객체의 주소값을 가져온다
    		TestBean t1 = (TestBean)ctx.getBean("test2");
    		System.out.println(t1);
    		TestBean t2 = (TestBean)ctx.getBean("test2");
    		System.out.println(t2);
    		TestBean t3 = (TestBean)ctx.getBean("test2");
    		System.out.println(t3);
    		TestBean t4 = (TestBean)ctx.getBean("test2");
    		System.out.println(t4);
    		ctx.close();

     

    결과값을 보면

    Test의 생성자
    kr.co.softcampus.beans.TestBean@6e0e048a
    Test의 생성자
    kr.co.softcampus.beans.TestBean@5bc79255
    Test의 생성자
    kr.co.softcampus.beans.TestBean@47ef968d
    Test의 생성자
    kr.co.softcampus.beans.TestBean@23e028a9

    생성자는 객체를 생성하면 생성된다 그런데 4번이나 출력이된걸보면 

    새로운 객체들이 4번 생성된걸 볼 수 있으며 객체의 주소값이 모두 다 다른것을 볼 수 있다.

    'spring framework' 카테고리의 다른 글

    several ports 문제  (0) 2020.08.04
    SpringJUnit4classRunner에러  (0) 2020.07.17
    톰캣 에러 'Publishing to Tomcat v9.0 Server at localhost..' has encountered a problem.  (2) 2020.04.24
    spring project 역활정리  (0) 2020.04.24
    bean  (0) 2020.04.21
Designed by Tistory.