Maison  >  Article  >  Java  >  Qu’est-ce que le framework Spring ? Introduction au conteneur IOC Spring Framework

Qu’est-ce que le framework Spring ? Introduction au conteneur IOC Spring Framework

不言
不言avant
2018-10-19 16:08:344275parcourir

Le contenu de cet article porte sur ce qu'est le framework Spring ? L'introduction du conteneur IOC du framework Spring a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer, j'espère qu'il vous sera utile.

1. Introduction au framework open source Spring

Spring est un framework open source et un framework de développement Java léger apparu en 2003. Dérivé de certains des idées et prototypes décrits par Rod Johnson dans son livre Expert One-On-One J2EE Development and Design. Il a été créé pour résoudre les complexités du développement d’applications d’entreprise.

Spring utilise des JavaBeans de base pour accomplir des choses qui n'étaient auparavant possibles qu'avec les EJB. Cependant, les utilisations de Spring ne se limitent pas au développement côté serveur. Toute application Java peut bénéficier de Spring en termes de simplicité, de testabilité et de couplage lâche. En termes simples, Spring est un framework de conteneurs léger d'inversion de contrôle (IoC) et orienté aspect (AOP).

Le framework de base de spring comprend principalement six modules : DAO, ORM, AOP, JEE, WEB et CORE.

 Qu’est-ce que le framework Spring ? Introduction au conteneur IOC Spring Framework

Spring DAO : Spring fournit un support opérationnel pour JDBC : classe d'outils de modèle JdbcTemplate.
Spring ORM : Spring peut être intégré au framework ORM. Par exemple, Spring intègre le framework Hibernate et Spring fournit également la classe d'outils HibernateDaoSupport, qui simplifie le fonctionnement d'Hibernate.
Spring WEB : Spring prend en charge Struts, Springmvc et prend en charge le développement WEB. Dans le même temps, Spring lui-même propose également des solutions basées sur MVC.
Spring AOP : Spring fournit une programmation orientée aspect et peut assurer la gestion des transactions pour une certaine couche, comme l'ajout d'un contrôle des transactions à la couche Service.
Spring JEE : prise en charge des spécifications de développement J2EE, telles que EJB.
Spring Core : permet la création d'objets conteneurs IOC et le traitement des relations d'objets dépendants.

2. Conteneur IOC et DI (Injection de dépendances) sous Spring

Conteneur IOC : C'est un conteneur avec fonction d'injection de dépendances. qui peut créer des objets. Le conteneur IOC est responsable de l'instanciation, de la localisation, de la configuration des objets dans l'application et de l'établissement des dépendances entre ces objets. Habituellement, une nouvelle instance est contrôlée par le programmeur, et « inversion de contrôle » signifie que le travail de la nouvelle instance n'est pas effectué par le programmeur mais est confié au conteneur Spring. . Au Spring, BeanFactory est le véritable représentant du conteneur IOC.

DI (injection de dépendances) : Une fois que le conteneur a créé l'objet, il gère les dépendances de l'objet.

  Méthode d'injection de ressort d'injection de dépendance :

méthode d'injection définie

méthode d'injection d'usine statique

méthode d'injection de méthode de constructeur

basée sur des annotations Méthode

1. Définir la méthode d'injection :
Code de la couche de contrôle :

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

Fichier XML de configuration Spring : La configuration déclare que la classe OrderAction a l'attribut orderService. Lorsque le programme est en cours d'exécution, l'objet orderService instancié sera injecté à l'aide de la méthode setOrderService.

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

2. Méthode d'injection du constructeur :

Code de la couche de contrôle :

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

Configuration du ressort XML Fichier :

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

3. Méthode basée sur l'annotation (recommandée, plus pratique et nécessite moins de configuration)

Code de la couche de contrôle :

@Autowired   //@Resource
private OrderServiceImp orderService;

Code de la couche de service :

@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>

Code de couche DAO :

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

注意点:

 ⑴ Le nom est spécifié dans le référentiel d'annotations de couche DAO de la couche de persistance, et le nom est déclaré dans la couche Service. Doit être cohérent.

⑵ Couche de service Annotation de la couche de service Le nom est spécifié dans Service et le nom déclaré dans la couche de contrôle doit être cohérent.

 ⑶ Injecter des annotations de dépendances via des annotations :

@Component         把对象加入ioc容器,对象引用名称是类名,第一个字母小写
@Component(“name”) 把指定名称的对象,加入ioc容器
@Repository        主要用于标识加入容器的对象是一个持久层的组件(类)
@Service           主要用于标识加入容器的对象是一个业务逻辑层的组件
@Controller        主要用于标识加入容器的对象是一个控制层的组件
@Resource          注入属性(DI), 会从容器中找对象注入到@Resource修饰的对象上
@Autowired         注入属性(DI), 会从容器中找对象注入到@Autowired修饰的对象上

⑷ Les annotations peuvent simplifier la configuration et améliorer l'efficacité du développement, mais elles ne sont pas non plus propices à une maintenance ultérieure.

Remarque : La différence entre @Autowired et @Resource

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer