1. Utilisez des annotations:
Dans le fichier de configuration de Spring ApplicationContext.xml, ajoutez une analyse d'annotation. L'élément de configuration configure la numérisation des paquets spécifiés pour implémenter l'injection de dépendance.
<? xml version = "1.0" encoding = "utf-8"?> <span style = "font-size: 18px;"> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns: context = "http://www.springframework.org/schema/contex xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/springframeworks-3.0.xschemma/contex http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsdd http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0. <aop: AspectJ-Autoproxy /> <Context: Annotation-Config /> <Context: Component-Scan Base-Package = "com.test" /> // où scanner </bans>
2. Commentaires courants:
@ Contrôleur @ service @ autowired @ requestmapping @ requestParam @ modéliste à cacheable @ cacheflush @ ressource @ postConstruct @ prestroy @ réposantage @ composant (non recommandé) @ scope @ sessionAttributes @ initbinder @ requis @ qualificatif
3. Annotations de printemps couramment utilisées:
@Controller (pour la couche de présentation)
Après avoir utilisé @Controller Annotation pour identifier l'utilisateur, cela signifie que l'utilisateur doit être remis au conteneur de ressort pour la gestion. Il y aura une action nommée "UserAction" dans le conteneur à ressort. Ce nom est pris en fonction du nom de la classe UserAction. Remarque: Si @Controller ne spécifie pas sa valeur 【@Controller】, le nom de bean par défaut est en minuscules dans la première lettre du nom de la classe. Si vous spécifiez la valeur 【@Controller (valeur = "userAction")】 ou 【@Controller ("userAction")】, utilisez la valeur comme nom du bean.
L'utilisateur ici utilise également l'annotation @scope. @Scope ("Prototype") signifie que la portée de l'action est déclarée comme prototype. Vous pouvez utiliser le scope = "Prototype" du conteneur pour vous assurer que chaque demande a une action distincte pour le gérer, en évitant les problèmes de sécurité du fil d'action dans les entretoises. Spring La portée par défaut est le mode Singleton (scope = "singleton"), qui ne créera qu'un objet d'action. Chaque accès est le même objet d'action. Les données ne sont pas sûres. Struts2 nécessite que chaque accès correspond à une action différente. scope = "Prototype" peut s'assurer qu'un objet d'action est créé lorsqu'il y a une demande.
@Contrôleur
@Scope ("Prototype") Classe publique UserAction étend Baseaction <User> {}@ Service (utilisé dans la couche logique commerciale)
Notez que l'annotation @Service est utilisée sous la classe d'implémentation de l'interface de service, pas dans l'interface.
Cela reflète très bien l'inversion de contrôle au printemps. Nous ne laissons pas l'objet instancier l'objet lui-même et nous appuyons activement sur l'objet, mais utilisons plutôt un conteneur pour créer l'objet, qui est géré par le CIO. Exemple:
Lorsque Action souhaite utiliser UserServiceIMPL, vous n'avez pas à créer activement une instance de UserServiceIMPL. La création d'une instance UserServiceIMPL a été remise à Spring. Spring donne à l'instance UserServiceIMPL créée à l'action, et vous pouvez l'utiliser directement après avoir obtenu l'action. L'action peut être utilisée immédiatement après la création active de l'instance UserServiceIMPL, mais devient passivement d'attendre Spring pour créer l'instance UserServiceIMPL avant de l'injecter en action. Cela montre que le "contrôle" de l'action sur la classe "userServiceImpl" a été "inversé". Il s'avère que l'initiative est entre mes mains. Je dois utiliser l'instance de classe "UserServiceImpl". Je peux prendre l'initiative de l'utiliser immédiatement. Mais maintenant, je ne peux pas prendre l'initiative pour de nouvelles instances de l'instance de classe "UserServiceImpl". La puissance de l'instance de la nouvelle classe "UserServiceImpl" a été supprimée par le printemps. Seul le printemps peut ne peut pas que les nouvelles instances de la classe "UserServiceImpl", et l'action ne peut attendre que Spring pour créer une classe "UserSe". Après l'instance de RviceImpl "classe", s'il vous plaît "Spring lui donne l'instance créée de la classe" UserServiceImpl "afin qu'il puisse utiliser" UserServiceImpl ". Il s'agit de l'idée principale de Spring" Control Inversion ", également appelée" injection de dépendance "." La dépendance "est également facile à comprendre. UserServiceImpll que l'ACION doit dépendre de l'action, qui est appelée «injection de dépendance».
@Service ("userService") classe publique UserServiceImpl implémente UserService {}@ Référentiel (pour la gestion des données)
L'auteur utilise l'outil pour générer le modèle de données de la couche d'entité et le mappeur à l'envers, donc cette annotation n'est pas utilisée, mais cela injecte simplement un haricot dans le récipient à ressort.
@Repository (value = "userdao") Classe publique UserDaoimpl étend BasedaOIMPL <User> {}4. Annotations SpringMVC couramment utilisées:
@Autowired (injecté par type)
Annoter les variables, méthodes et constructeurs des membres de la classe pour terminer les travaux d'assemblage automatique. Autrement dit, c'est pour appeler le haricot et dire au printemps qu'il existe et est géré dans le conteneur.
@Autowired Recherche de l'article Spring Online selon le type de bean. Le type d'enregistrement doit être unique, sinon une exception sera signalée.
Lorsque l'annotation @Autowired agit sur le type de carte, si la clé de la carte est le type de chaîne, Spring ajoutera tous les types dans le conteneur au type correspondant de la valeur de la carte et utilise l'ID ou le nom du bean comme clé de la carte.
@Autowired Une autre fonction est que si elle est annotée sur le type BeanFactory, le type de Context Application, le type ResourceLoader, le type d'applicationEventPublisher et le type MessageSource, Spring injectera automatiquement les instances de ces classes d'implémentation sans opérations supplémentaires.
@Autowired
Private IreportService rapporte un service de service;
@Resource (injecté par son nom)
Semblable à @Autowired, @Resource recherche par défaut selon le nom du bean. S'il n'est pas trouvé, il recherchera par type.
@Ressource
DataSource privé DataSource; // injecter le haricot nommé «données de données»
@Resource (name = "dataSource")
@Resource (type = dataSource.class)
Question étendue: Qu'est-ce que l'assemblage par type et quelle est l'assemblage par nom?
Par type signifie que lorsqu'il y a un bean avec le même type que l'attribut spécifié dans le conteneur à ressort, l'attribut sera automatiquement assemblé; S'il y a plusieurs haricots de ce type, une exception sera exécutée et il est souligné que l'assemblage automatique par type ne peut pas être utilisé; Si aucun haricot assorti n'est trouvé, rien ne se passera.
Le soi-disant nom signifie un assemblage automatique basé sur le nom d'attribut. Cet élément vérifiera les haricots dans le conteneur à ressort qui sont exactement les mêmes que le nom d'attribut et effectueront un assemblage automatique.
@Requestmapping (adresse de demande de carte)
Les annotations utilisées pour gérer les mappages d'adresses demandées peuvent être utilisées sur les classes ou les méthodes. Pour une utilisation sur une classe, toutes les méthodes qui représentent ces demandes de réponse dans une classe prennent cette adresse comme chemin parent.
Il y a six attributs, à savoir:
1. Valeur, méthode;
Valeur: Spécifie l'adresse réelle de la demande, et l'adresse spécifiée peut être en mode modèle URI (qui sera expliqué plus loin);
Méthode: spécifiez le type de méthode demandée, obtenez, publiez, put, supprime, etc.;
2. Consume, produit
consommateurs: spécifie le type de soumission (type de contenu) qui gère la demande, telle que l'application / JSON, le texte / html;
produit: spécifie le type de contenu renvoyé, qui ne sera renvoyé que si le type (accepter) dans l'en-tête de demande de demande contient le type spécifié;
3. Params, en-têtes
Paramètres: spécifie que la demande doit contenir certaines valeurs de paramètres avant que la méthode ne puisse être traitée.
En-têtes: spécifie que la demande doit contenir certaines valeurs d'en-tête spécifiées afin que la méthode gère la demande.
@Controller@RequestMapping("/bbtForum.do")public class BbtForumController { @RequestMapping(params = "method=listBoardTopic") public String listBoardTopic(int topicId,User user) {}}@RequestMapping("/softpg/downSoftPg.do")@RequestMapping(value="/softpg/ajaxLoadSoftId.do", méthode = requestMethod.post) @RequestMapping (value = "/ osu / product / détail.do", params = {"modifier = false"}, méthode = requestMethod.post)@RequestParam (obtenez la valeur du paramètre de demande)
Par exemple, notre adresse d'accès dans le navigateur est: LocalHost: 8080 / Hello? Id = 1000, et nous obtenons la valeur d'ID, par exemple:
@RestControllerPublic classe HelloController {@RequestMapping (value = "/ hello", méthode = requestMethod.get) public String Sayshello (@RequestParam ("id") INTER ID) {return "id:" + id; }}@Pathvaribale (obtenir des données dans l'URL)
@RestControllerPublic classe HelloController {@RequestMapping (value = "/ hello / {id}", méthode = requestMethod.get) public chaîne sayshello (@pathvariable ("id") INTER ID) {return "id:" + id; }}@ResponseBody (return type json)
Fonction: Cette annotation est utilisée pour convertir l'objet renvoyé par la méthode du contrôleur au format spécifié via le HTTPMessageConverter approprié et l'écrivez dans la zone de données du corps de l'objet de réponse.
Temps d'utilisation: les données renvoyées ne sont pas une page avec la balise HTML, mais sont utilisées lorsque les données dans un autre format (telles que JSON, XML, etc.);
Résumer
Ce qui précède est l'analyse des annotations communes dans Spring SpringMVC présentée par l'éditeur. J'espère que cela vous sera utile. Si vous avez des questions, veuillez me laisser un message et l'éditeur vous répondra à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!