Spring에서 실례화된 bean의 네 가지 방식 상세 설명
Bean의 실례화된 방식을 소개하기 전에 우리는 먼저 Bean이 무엇인지, 그리고 Bean의 설정 방식을 소개해야 한다.
스프링을 하나의 대형 공장으로 간주한다면, 스프링 용기 속의 Bean이 바로 이 공장의 제품이다.Spring 공장에서 Bean을 생산하고 관리하려면 구성 파일에 어떤 Bean이 필요하고 어떤 방식으로 이 Bean을 조립해야 하는지 지정해야 합니다.
Spring 용기는 두 가지 형식의 프로필을 지원합니다. 각각Properties 파일 형식과 xml 파일 형식입니다. 실제 개발에서 가장 많이 사용되는 금액은 xml 파일 형식입니다. 따라서 아래의 설명에서 우리는 xml 파일 형식의 프로필 형식으로 설명합니다.XML 프로필의 루트 요소는
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- spring, spring -->
<bean id="userDao" class="com.ioc.UserDaoImpl"/>
<bean name="userDao1, userDao2" class="com.ioc.UserDaoImpl2"/>
</beans>
상기 코드에서 각각 id와name 속성을 사용하여 두 개의 Bean을 정의하고class 요소를 사용하여 해당하는 실현 클래스를 지정합니다. 만약에 id와name를 지정하지 않으면Spring은class 값을 id로 사용합니다.Spring 실례화 bean의 네 가지 방식
본고는 주로 네 가지 실례화 bean 방식(주입 방식)이나 의존 대상의 실례화 네 가지 방식을 소개한다.위의 프로그램, bean 대상을 만드는 방법, 어떤 방법을 사용하는지, 함수를 만드는 방식을 사용합니다(Spring은 함수를 사유화하는 상황에서 클래스 대상을 만들 수 있습니다)
일반적인 작성 방식은 다음과 같습니다.
1) setter 방법
2) 구조 함수
3) 정적 공장
4) 인스턴스 공장
1. setter 방식으로
public interface IUserDao {
void addUser();
void delUser();
void updateUser();
}
public class UserDaoImpl implements IUserDao {
public void addUser() {
System.out.println("addUser ");
}
public void delUser() {
System.out.println("delUser ");
}
public void updateUser() {
System.out.println("updateUser ");
}
}
public class UserAction {
private IUserDao dao; //dao , springg , get set
public void execute(){
dao.addUser();
dao.updateUser();
dao.delUser();
}
}
//
<bean name="userAction_name" class="cat.action.UserAction" >
<property name="dao" ref="userDao_name" /> //
</bean>
<bean name="userDao_name" class="cat.dao.UserDaoImpl" />
//
ClassPathXmlApplicationContext ctx=new ClassPathXmlApplicationContext("beans.xml");
UserAction action=(UserAction)ctx.getBean("userAction_name");
action.execute();
2. 구조 함수
public class UserAction {
//public UserAction(){}
// , get set
private UserInfo user;
private String school;
private IUserDao dao;
// Spring
public UserAction(IUserDao dao,UserInfo user,String school){
this.dao=dao;
this.school=school;
this.user=user;
}
public void execute(){
dao.addUser();
dao.updateUser();
dao.delUser();
System.out.println(user);
System.out.println(school);
}
//
<bean name="userInfo_name" class="cat.beans.UserInfo" >
<property name="id" value="1" />
<property name="userName" value=" " />
<property name="password" value="123" />
<property name="note" value=" " />
</bean>
<bean name="userAction_name" class="cat.action.UserAction" >
<constructor-arg ref="userDao_name" />
<constructor-arg ref="userInfo_name" />
<constructor-arg value=" " />
</bean>
/*
type , type
<bean name="userAction_name" class="cat.action.UserAction" >
<constructor-arg index="0" ref="userDao_name" type="cat.dao.IUserDao" /> ,
<constructor-arg index="1" ref="userInfo_name" type="cat.beans.UserInfo" />
<constructor-arg index="2" value=" " />
</bean>
*/
<bean name="userDao_name" class="cat.dao.UserDaoImpl" />
//
ClassPathXmlApplicationContext ctx=new ClassPathXmlApplicationContext("beans.xml");
UserAction action=(UserAction)ctx.getBean("userAction_name");
action.execute();
3. 정적 공장 방식
// , dao
public class UserDaoFactory {
public static IUserDao createUserDaoInstance(){
return new UserDaoOracleImpl();
}
}
public class UserAction {
private IUserDao dao;// , set
public void execute(){
dao.addUser();
dao.updateUser();
dao.delUser();
}
public void setDao(IUserDao dao) {
this.dao = dao;
}
}
//
<bean name="userAction_name" class="cat.action.UserAction" >
<property name="dao" ref="userDao_name" />
</bean>
<bean name="userDao_name" class="cat.dao.UserDaoFactory" factory-method="createUserDaoInstance" />
//
ClassPathXmlApplicationContext ctx=new ClassPathXmlApplicationContext("beans.xml");
UserAction action=(UserAction)ctx.getBean("userAction_name");
action.execute();
4. 실례 공장
// =>
public class UserDaoFactory {
//
public IUserDao createUserDaoInstance(){
return new UserDaoOracleImpl();
}
}
//
<bean name="userAction_name" class="cat.action.UserAction" >
<property name="dao" ref="userDao_name" />
</bean>
<bean name="userDaoFactory_name" class="cat.dao.UserDaoFactory" />
<bean name="userDao_name" factory-bean="userDaoFactory_name" factory-method="createUserDaoInstance" />
총결산이상은 바로 이 글의 전체 내용입니다. 본고의 내용이 여러분의 학습이나 업무에 대해 참고 학습 가치가 있기를 바랍니다. 의문이 있으면 댓글로 교류해 주십시오. 저희에 대한 지지에 감사드립니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.