Spring 의 IOC 상세 설명
간단하게 우리 의 장면 을 묘사 하고 새로운 사용 자 를 데이터베이스 에 추가 합 니 다.여기 서 우 리 는 층 을 나 누 는 방식 으로 기능 을 실현 합 니 다.우 리 는 개발 프로그램 이 반드시 프로그램의 이식 성에 주의해 야 한 다 는 것 을 알 고 있 습 니 다.그래서 여기 서 간단하게 인 터 페 이 스 를 대상 으로 프로 그래 밍 을 소개 합 니 다.면 방향 인터페이스 프로 그래 밍 은 추상 적 인 프로 그래 밍,규범 적 인 프로 그래 밍 입 니 다.그것 이 가 져 온 가장 큰 장점 은 바로 결합 을 해제 하고 확장 성 을 강화 하 며 변 화 를 차단 하 는 것 이다.
자,다음은 제 업무 실현 을 시작 하 겠 습 니 다.우선 모델-Userdo.자바 를 만들어 야 합 니 다.
public class UserDO {
private String name;
private String password;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
사용자 대상 이 생 겼 습 니 다.다음 에 저 희 는 Selvect 류 를 만 들 기 시 작 했 습 니 다.Selvect 는 사용자 의 요청 을 받 은 대상 을 사용 한 것 을 알 고 있 습 니 다.여 기 는 여러분 의 이 해 를 편리 하 게 하기 위해 서 입 니 다.그래서 저 희 는 Selvect 에서 사용자 의 요청 을 받 은 후에 관련 업무 논리 처 리 를 모 의 했 습 니 다.
public class UserSelvect {
public static void main(String[] args) {
UserDO userDO = new UserDO();
BeanFactory beanFactory = new ClassPathXmlApplicationContext();// Bean
UserService userService = (UserService) beanFactory.getBean("userService");//
userService.add(userDO);//
}
}
일반적으로 우리 의 업무 논 리 는 Service 층 에 놓 여 조작 하기 때문에 나 는 먼저 우리 의 Service 대상 을 볼 수 있다.
public class UserService {
private UserDao userDao;// DAO
public UserDao getUserDao() {
return userDao;
}
// Bean DAO
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
// Selvect ,
public void add(User u){
userDao.add(u);
}
}
다음은 우리 의 DAO 층 의 실현 입 니 다.여기 서 설명 하 겠 습 니 다.프로그램의 이식 성 을 극 대화 하기 위해 다음 에 인터페이스 프로 그래 밍 의 실현 으로 디자인 할 것 입 니 다.
/**
* DAO
*
*/
public interface UserDao {
public void add(User u);
}
인 터 페 이 스 를 위 한 프로 그래 밍 이 므 로 인터페이스 클래스 가 필요 합 니 다.
public class UserDaoImpl implements UserDao{
public void add(User u){
System.out.println(" ");
}
}
자,여기까지 우리 의 기본 프레임 워 크 가 완성 되 었 습 니 다.그 다음 에 중점 적 인 내용 을 시작 해 야 합 니 다.먼저 xml 해석 에 관 한 지식 을 알 아야 합 니 다.이전 블 로그 에서 Jdom 은 XML 파일 을 읽 고 모 르 는 파트너 는 먼저 걸음 을 옮 겨 간단하게 볼 수 있 습 니 다.그러면 다음 내용 은...너 야 말로 힘 들 정 도 는 아니다.다음은 이 데모 디자인 을 진행 하 겠 습 니 다.먼저 src 디 렉 터 리 에 Spring.xml 파일 을 추가 합 니 다.
<?xml version="1.0" encoding="UTF-8"?>
<beans>
<bean id="userDao" class="com.manyiaby.daoimpl.UserDaoImpl"></bean>
<bean id="userService" class="com.manyiaby.service.UserService">
<property name="userDao" bean="userDao"></property>
</bean>
</beans>
다음 에 저 희 는 Bean 프로젝트 대상 을 정의 합 니 다.Spring.xml 파일 을 읽 고 대상 인 스 턴 스 의 생 성 을 완성 하 며 다음 업무 작업 을 수행 합 니 다.
public interface BeanFactory {
public Object getBean(String className);
}
여러분 은 우리 빈 공장 도 인터페이스 프로 그래 밍 을 사용 하 는 사상 을 발견 하 셨 습 니까?다음은 우리 공장 의 실현 유형 을 살 펴 보 겠 습 니 다.
public class ClassPathXmlApplicationContext implements BeanFactory{
private Map<String, Object> beanMap = new HashMap<String, Object>();//
public ClassPathXmlApplicationContext(){
try {
SAXBuilder saxBulder = new SAXBuilder();
Document doc = saxBulder.build(ClassPathXmlApplicationContext.class
.getClassLoader().getResourceAsStream("spring.xml"));
Element root = doc.getRootElement();//
List<Element> list = root.getChildren("bean");
for (Element element : list) {
String id = element.getAttributeValue("id");// beanId
String className = element.getAttributeValue("class");// Bean
System.out.println(className);
Object object = Class.forName(className).newInstance();
beanMap.put(id, object);
if (null != element.getChild("property")) {
Element property = element.getChild("property");
String name = property.getAttributeValue("name");
String beanId = property.getAttributeValue("bean");
Object beanObject = beanMap.get(beanId);//UserDaoImpl
String methodName = "set" + name.substring(0, 1).toUpperCase() + name.substring(1);//setUserDao
System.out.println(methodName);
Method m = object.getClass().getMethod(methodName, beanObject.getClass().getInterfaces()[0]);//UserService SetUserDao() , UserDao
m.invoke(object, beanObject);// UserService SetUserDao() , UserDaoImpl
}
}
} catch (Exception e) {
System.out.println("" + e);
}
}
//
@Override
public Object getBean(String className) {
return beanMap.get(className);
}
}
간단하게 소개 하 겠 습 니 다.저 희 는 beanMap 을 통 해 Spring 에 설 치 된 대상 을 반사 체 제 를 통 해 얻 은 다음 에 beanMap 대상 에 배치 하고 getBean 방법 을 통 해 외부 클래스 를 호출 합 니 다.위 에 서 는 Spring 에서 IOC 의 일부 내용 을 간단하게 모 의 했 습 니 다.다음은 Spring 을 통 해 위의 작업 을 어떻게 완성 하 는 지 살 펴 보 겠 습 니 다.먼저 spring.jar 를 다운로드 해 야 합 니 다.이 jar 가 있 으 면 부족 합 니 다.spring 은 comons-logging.jar 에 의존 합 니 다.이 두 jar 가방 을 우리 프로젝트 에 도입 한 다음 에 어떻게 사용 하 는 지 살 펴 보 겠 습 니 다.
public class UserSelvect {
public void main() {
UserDO userDO = new UserDO();
BeanFactory beanFactory = new ClassPathXmlApplicationContext("spring.xml");
UserService userService = (UserService) beanFactory.getBean("userService");
//ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
//UserService userService = (UserService) context.getBean("userService");
userService.add(userDO);
}
}
다른 것 은 수정 할 필요 가 없습니다.아주 간단 하지 않 습 니까?자,Spring 에 관 한 내용 은 여기까지 소개 해 드 리 겠 습 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.또한 우 리 를 많이 지지 해 주시 기 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.