JavaWeb_ (스프링 프레임 워크)를 DI 개념 봄 IOC의 항목

 

 

  

 

    봄은로드 존슨에 의해 만들어진 2003 자바 오픈 소스 프레임 워크에 경량의 상승이다. 기존의 J2EE 애플리케이션의 낮은 효율의 개발은 오픈 소스 미들웨어 솔루션은 J2EE 애플리케이션의 레이어를 제공 봄으로, 봄 프로그램의 특정 레이어의 프리젠 테이션 레이어, 비즈니스 레이어와 지속성 계층보다는 초점에 걸쳐. 라고 할 수있다 Spring은 엔터프라이즈 애플리케이션 개발 "원 스톱 (전체 스택)"옵션입니다. 그러나 봄은 이러한 기존의 틀을 바꾸려하지 않고, 완벽하게 그들과 함께 통합 할 수 있습니다. 

    간략하게, 스프링 컨테이너 프레임 대향 제어 IOC () 및 섹션 (AOP)의 경량의 반전이다.
봄 무엇은 무엇입니까?

 

도 1은, 현상 단순화 디커플링 촉진하는 
    개체 스프링 인한 과도한 결합 하드 코딩 프로그램을 피하도록 제어 함 사이의 스프링에 의해 제공 IoC 컨테이너, 우리는 관계에 의존 할 수있다. 봄을 통해 사용자가 더 이상 단일 인스턴스 모드 수업을, 같은 파일을 구문 분석 코드와 같은 속성이 기본 요구에 기록되지 않습니다, 우리는 상위 응용 프로그램에 더 집중할 수 있습니다. 

2, AOP 프로그래밍 지원 
    AOP 봄 이벤트를 통해 편리 Aspect 지향적 인 프로그래밍, 많은 사람들이 쉽게 AOP에 의해 대응할 수있는 기존의 OOP 기능을 사용하여 달성하기 쉽지 않다. 

3, 선언적인 트랜잭션에 대한 지원 
    봄, 우리는 선언적인 방법의 유연성을 통해 트랜잭션을 관리 개발 효율성과 품질을 개선하기 위해, 트랜잭션 관리 코드에서 단조로운 지루함에서 탈출 할 수 있습니다. 

4, 테스트 절차를 용이하게하기 위해 
    봄에, 비 컨테이너에 의존하는 프로그램 거의 모든 테스트를 사용하여 수행 할 수 있으며, 시험은 더 이상 비용이 많이 드는 작업 없지만, 쉽게 일을. 예를 들어 : 봄은 Junit4 지원을 위해, 당신은 쉽게 봄 테스트 프로그램을 언급 할 수있다. 

5, 우수한 프레임 워크의 다양한 쉽게 통합 
    봄이 뛰어난 오픈 소스 프레임 워크의 다양한 배제하지 않는 반면에, 봄은 다양한 프레임 워크를 사용의 어려움을 줄일 수 있습니다, 봄 (예 : 스트럿츠, 최대 절전 모드, MyBatis로, 헤센, 우수한 프레임 워크의 다양한 제공 석영) 및 기타 직접 지원. 

6, 자바 EE API의 사용 감소의 어려움 
    (등 JDBC, JavaMail에, 원격 호출 등) 많은 자바 EE API 사용하기 어려운 봄은 봄의 간단한 캡슐화, 자바 EE의 API 사용의 어려움으로, 얇은 캡슐화 계층을 제공합니다 크게 감소.
왜 봄을 사용할 수 있습니까?

 

 

  , 프로젝트를 생성 항아리 패키지를 가져  

  

  코어 패키지 : 콩, 문맥, 코어, 표현식;

  日志包:apache.commons.logging

 

  引入约束:bean约束和引入主配置文件头;

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
            xmlns="http://www.springframework.org/schema/beans" 
            xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd ">

</beans>        
applicationContent.xml

 

  测试:将自定义对象由自己创建交由Spring管理

 

package com.Gary.bean;

public class User {

    private Integer u_id;
    private String u_username;
    private String u_password;
    
    
    public Integer getU_id() {
        return u_id;
    }
    public void setU_id(Integer u_id) {
        this.u_id = u_id;
    }
    public String getU_username() {
        return u_username;
    }
    public void setU_username(String u_username) {
        this.u_username = u_username;
    }
    public String getU_password() {
        return u_password;
    }
    public void setU_password(String u_password) {
        this.u_password = u_password;
    }
    
    
    
}
User.java

 

package com.Gary.test;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.Gary.bean.User;

public class HelloSpring {

    @Test
    public void Test1() {
        User u = new User();
        
        System.out.println("Test1()"+u);
    }
    
    //Spring是一个容器,它将帮助我们管理对象
    @Test
    public void Test2() {
        
        //根据spring配置文件获取容器对象
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
        //User u = ac.getBean(User.class);
        //通过getBean获取配置好的user对象,程序员向Spring容器要对象
        User u = (User) ac.getBean("user");
        
        System.out.println("Test2()"+u);
        
    }
    
    
}
HelloSpring.java

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
            xmlns="http://www.springframework.org/schema/beans" 
            xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd ">

    <bean name="user" class="com.Gary.bean.User">
        
    </bean>

</beans>        
applicationContext.xml

 

Spring-IoC | DI概念介绍:(要实现IOC依赖DI的支持)

  IoC(Inversion of Control):反转控制:将我们自己创建对象的工作交给Spring容器帮我们完成; 
  DI(Dependency Injection):依赖注入:将值通过配置的方式为变量初始化/赋值(注入);

  IOC的反转:创建对象这份工作由我们自己执行反转给spring帮我们执行;
  IOC的控制:就是由spring帮我们负责创建销毁对象,掌控对象的生命周期等,我们在需要使用对象的时候跟Spring申请即可;
  IOC是一种编程思想,也是一种新的设计模式,它需要DI(依赖注入)技术的支持;

    c)注入方式:set方法注入、构造注入、字段注入(不推荐);

    d)注入类型: 

      i.值类型(value) – 八大基本数据类型;

      ii.引用类型(ref) – String、自定义对象;

 

  spring是一个容器,它将帮我们管理对象
  传统方式给u_id赋值

    @Test
    public void Test1() {
        User u = new User();
        //传统方式给u_id赋值
        u.setU_id(1);
        
        System.out.println("Test1()"+u);
    }

 

  Spring给u_id赋值

  @Test
    public void Test2() {
        
        //根据spring配置文件获取容器对象
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
        //User u = ac.getBean(User.class);
        //通过getBean获取配置好的user对象,程序员向Spring容器要对象
        User u = (User) ac.getBean("user");
        
        System.out.println("Test2()"+u);
        
    }

 

    <bean name="user" class="com.Gary.bean.User">
        <!-- 为u_id注入了一个id为2的值 -->
        <property name="u_id" value="2"></property>
    </bean>

 

  

 

package com.Gary.test;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.Gary.bean.User;

public class HelloSpring {

    @Test
    public void Test1() {
        User u = new User();
        //传统方式给u_id赋值
        u.setU_id(1);
        
        System.out.println("Test1()"+u);
    }
    
    //Spring是一个容器,它将帮助我们管理对象
    @Test
    public void Test2() {
        
        //根据spring配置文件获取容器对象
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
        //User u = ac.getBean(User.class);
        //通过getBean获取配置好的user对象,程序员向Spring容器要对象
        User u = (User) ac.getBean("user");
        
        System.out.println("Test2()"+u);
        
    }
    
    
}
HelloSpring.java

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
            xmlns="http://www.springframework.org/schema/beans" 
            xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd ">

    <bean name="user" class="com.Gary.bean.User">
        <!-- 为u_id注入了一个id为2的值 -->
        <property name="u_id" value="2"></property>
    </bean>

</beans>        
applicationContext.xml

 

  使用Spring改造Servlet项目对象关系依赖图

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

추천

출처www.cnblogs.com/1138720556Gary/p/12001516.html