>Java >java지도 시간 >스프링 프레임워크란 무엇인가요? Spring Framework IOC 컨테이너 소개

스프링 프레임워크란 무엇인가요? Spring Framework IOC 컨테이너 소개

不言
不言앞으로
2018-10-19 16:08:344299검색

이 기사에서는 Spring 프레임워크가 무엇인지 설명합니다. Spring 프레임워크 IOC 컨테이너의 도입에는 특정 참조 가치가 있습니다. 도움이 필요한 친구가 이를 참조할 수 있기를 바랍니다.

1. Spring 오픈 소스 프레임워크 소개

Spring은 2003년에 등장한 오픈 소스 프레임워크이자 경량 Java 개발 프레임워크입니다. Rod Johnson이 그의 저서 "Expert One-On-One J2EE"에서 썼습니다. 개발'과 디자인'은 '에 설명된 일부 개념과 프로토타입에서 파생됩니다. 엔터프라이즈 애플리케이션 개발의 복잡성을 해결하기 위해 만들어졌습니다.

Spring은 기본 JavaBeans를 사용하여 이전에는 EJB에서만 가능했던 작업을 수행합니다. 그러나 Spring의 용도는 서버측 개발에만 국한되지 않습니다. 모든 Java 애플리케이션은 단순성, 테스트 용이성 및 느슨한 결합 측면에서 Spring의 이점을 누릴 수 있습니다. 간단히 말해서 Spring은 경량의 IoC(Inversion of Control) 및 AOP(Aspect-Oriented) 컨테이너 프레임워크입니다.

Spring의 기본 프레임워크는 주로 DAO, ORM, AOP, JEE, WEB 및 CORE의 6개 모듈로 구성됩니다.

 스프링 프레임워크란 무엇인가요? Spring Framework IOC 컨테이너 소개

Spring DAO: Spring은 JDBC에 대한 작업 지원을 제공합니다: JdbcTemplate 템플릿 도구 클래스.
Spring ORM: Spring은 ORM 프레임워크와 통합될 수 있습니다. 예를 들어 Spring은 Hibernate 프레임워크를 통합하고 Spring은 Hibernate의 작동을 단순화하는 HibernateDaoSupport 도구 클래스도 제공합니다.
Spring WEB: Spring은 Struts, Springmvc를 지원하고 WEB 개발을 지원합니다. 동시에 Spring 자체도 MVC 기반 솔루션을 제공합니다.
Spring AOP: Spring은 서비스 계층에 트랜잭션 제어를 추가하는 등 특정 계층에 대한 트랜잭션 관리를 제공할 수 있는 관점 지향 프로그래밍을 제공합니다.
Spring JEE: EJB와 같은 J2EE 개발 사양을 지원합니다.
Spring Core: IOC 컨테이너 개체 생성 및 종속 개체 관계 처리 기능을 제공합니다.

2. Spring의 IOC 컨테이너와 DI(의존성 주입)

IOC 컨테이너: 종속성 주입 기능을 갖춘 컨테이너이자 객체를 생성할 수 있는 컨테이너입니다. 프로그램에서 응용 프로그램 개체를 구성하고 이러한 개체 간의 종속성을 설정합니다. 일반적으로 새 인스턴스는 프로그래머에 의해 제어되며 "제어 역전"은 새 인스턴스의 작업이 프로그래머에 의해 수행되지 않고 Spring 컨테이너로 넘겨지는 것을 의미합니다. . Spring에서 BeanFactory는 IOC 컨테이너의 실제 대표자입니다.

DI(종속성 주입): 컨테이너가 객체를 생성한 후 객체의 종속성을 처리합니다.

  종속성 주입 스프링 주입 방법:

set 주입 방법

Static Factory 주입 방법

Constructor 메서드 주입 방법

Annotation 기반 방법

  1. 주입 방법 설정:
제어 레이어 코드:

private OrderServiceImp orderService;
    
public void setOrderService(OrderServiceImp orderService) {
       this.orderService = orderService;
}

Spring 구성 XML 파일: 구성은 OrderAction 클래스에 orderService 속성이 있음을 선언합니다. 프로그램이 실행 중일 때 인스턴스화된 orderService 객체는 setOrderService 메소드를 사용하여 주입됩니다.

<bean>
        <property></property>
</bean>
<bean></bean>

2. 생성자 주입 방법:

컨트롤 레이어 코드:

private OrderServiceImp orderService;
    
public OrderAction(OrderServiceImp orderService) {
        this.orderService = orderService;
    }

스프링 구성 XML 파일: XML文件:

<bean>
      <constructor-arg></constructor-arg>
</bean>
<bean></bean>

3、基于注解的方式(推荐使用,比较便捷少配置)

控制层代码:

@Autowired   //@Resource
private OrderServiceImp orderService;

 服务层代码:

@Service("orderService")
public class OrderServiceImp implements IOrderService {

    @Autowired
    private JavaOrderMDaoImp javaOrderMDao;

    @Autowired
    private JavaOrderDDaoImp javaOrderDDao;

    @Override
    public List<javaordermlist> findOrderM(OrderSearch search) {
        return javaOrderMDao.findJavaOrderM(search);
    }

    @Override
    public List<javaorderdlist> findOrderD(OrderSearch search) {
        return javaOrderDDao.findJavaOrderD(search);
    }

}</javaorderdlist></javaordermlist>

DAO层代码:

@Repository("javaOrderMDao")
public class JavaOrderMDaoImp extends BaseHibernateDAO<javaorderm> implements IJavaOrderMDao {...}</javaorderm>
@Repository("javaOrderDDao")
public class JavaOrderDDaoImp extendsBaseHibernateDAO<javaorderd> implements IJavaOrderDDao {...}</javaorderd>

注意点:

@Component         把对象加入ioc容器,对象引用名称是类名,第一个字母小写
@Component(“name”) 把指定名称的对象,加入ioc容器
@Repository        主要用于标识加入容器的对象是一个持久层的组件(类)
@Service           主要用于标识加入容器的对象是一个业务逻辑层的组件
@Controller        主要用于标识加入容器的对象是一个控制层的组件
@Resource          注入属性(DI), 会从容器中找对象注入到@Resource修饰的对象上
@Autowired         注入属性(DI), 会从容器中找对象注入到@Autowired修饰的对象上
3. 주석 기반 방법(권장, 더 편리하고 적은 구성)

제어 레이어 코드:

rrreee

서비스 레이어 코드:

rrreee

DAO 레이어 코드:

rrreeerrreee

참고:

🎜🎜 ⑴ 지속성 레이어 DAO 레이어 주석의 이름은 저장소에 지정됩니다. 서비스 계층에서 선언된 이름은 일관되어야 합니다. 🎜🎜 ⑵ 서비스 레이어 서비스 레이어 주석 이름은 서비스에 지정되며, 컨트롤 레이어에 선언된 이름은 일관성이 있어야 합니다. 🎜🎜 ⑶ 종속성 주석 삽입을 위한 주석 방법: 🎜rrreee🎜⑷ 주석은 구성을 단순화하고 개발 효율성을 향상시킬 수 있지만 향후 유지 관리에도 도움이 되지 않습니다. 🎜🎜 참고: @Autowired와 @Resource🎜의 차이점

위 내용은 스프링 프레임워크란 무엇인가요? Spring Framework IOC 컨테이너 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제