一、 @SpringBootApplication
Parmi SpringBoot
les classes de démarrage créées automatiquement par le framework pour nous, @SpringBootApplication
les balises d'annotation sont utilisées pour modifier la classe de démarrage.
@SpringBootApplication
La balise d'annotation est en fait une balise d'annotation composée, comprenant @EnableAutoConfiguration
, @ComponentScan
généralement utilisée sur la classe principale
annotation | illustrer |
---|---|
@SpringBootApplication | Utilisé pour déclarer des classes de démarrage pour modification |
@EnableAutoConfiguration | C'est springboot l'annotation de base pour la configuration automatique, à travers laquelle spring l'application doit être bean injectée dans le conteneur |
@ComponentScan | Il est utilisé pour analyser automatiquement les classes identifiées par des annotations et les générer ioc dans le conteneur bean . La portée d'analyse par défaut est @ComponentScan les classes dans le package de classe de configuration et les sous-packages où se trouvent les annotations |
Deux, @Configuration, @Bean
annotation | illustrer |
---|---|
@Configuration | Agir sur la classe pour configurer spring le conteneur (contexte d'application), ce qui revient à utiliser la classe comme fichier spring de configurationxml |
@Haricot | Créez bean un objet et ajoutez-le au conteneur en agissant sur la méthode |
Exemple:
SSM
Lors de l'intégration du framework natif , si nous voulons IOC
ajouter un objet personnalisé au conteneur, ce que nous devons faire est d' ajouter la déclaration de contenu de la balise suivante
sous Spring
la balise talon du fichier de configuration utilisé par le framework :
<bean id="user" class="com.qf.testspringboot.pojo.User">
<property name="id" value="1"/>
<property name="username" value="张三"/>
<property name="age" value="22"/>
</bean>
Mais dans SpringBoot
le cadre, nous sommes autorisés à IOC
injecter directement des objets personnalisés dans le conteneur en créant et en renvoyant des objets Java.
Ce processus dépend des @Configuration
balises d'annotation et @Bean
des balises d'annotation.
Nous préparons d'abord une User
classe:
@Data //记得要导入Lombok相关的依赖
@NoArgsConstructor
@AllArgsConstructor
public class User {
private Integer id;
private String username;
private Integer age;
}
Créez ensuite une UserConfiguration
classe et utilisez @Configuration
la balise d'annotation de cette classe pour déclarer que cette classe est une classe de configuration :
@Configuration
public class UserConfiguration {
}
Créez une méthode dans cette classe, la valeur de retour de la méthode est User
type et le nom de la méthode est IOC
le nom de l'objet injecté dans le conteneur, et utilisez @Bean
l'étiquette d'annotation pour cette méthode :
@Configuration
public class UserConfiguration {
@Bean
public User user() {
/*
下列代码等价于:
<bean id="user" class="com.qf.testspringboot.pojo.User">
<property name="id" value="1"/>
<property name="username" value="张三"/>
<property name="age" value="22"/>
</bean>
方法的返回值数据类型等价于<bean>标签中的class属性取值
方法的方法名等价于<bean>标签中的id属性取值
*/
User user = new User(1, "张三", 22);
return user;
}
}
À ce stade, le flux logique permettant SpringBoot
au framework d'analyser et IOC
d'injecter des objets dans le conteneur est :
- Lorsque le framework SpringBoot scanne
@Configuration
le type décoré avec des balises d'annotation, il considérera cette classe comme une classe de configuration ; @Bean
L'objet de valeur de retour de la méthode décoré avec des balises d'annotation dans la classe de configuration sera automatiquement injectéIOC
dans le conteneur pour le stockage ;@Bean
Le type de données de la valeur de retour de la méthode de décoration de balise d'annotation est équivalent à la valeur d'attribut de la baliseclass
;- Par défaut,
@Bean
le nom de méthode de la méthode décorée avec la balise d'annotation est équivalent àid
la valeur d'attribut de la balise, c'est-à-dire leIOC
nom d'objet de l'objet dans le conteneur.
De cette façon, nous pouvons XML
facilement IOC
injecter des objets Java personnalisés dans le conteneur sans utiliser de fichiers de configuration.
3. @AutoWired
@Autowired
Par défaut, il est assemblé par type, ce qui est souvent utilisé dans les classes d'implémentation de la couche métier et les classes d'implémentation de la couche de persistance.
Exemple:
Dans TestController
la classe, @Autowired
un objet est automatiquement injecté via la balise d'annotation User
, et lors test
de l'accès à la méthode, l' User
objet est imprimé :
@Controller //SpringMVC当中的注解标签都还能用
public class TestController {
@Autowired
private User user; //自动注入自定义的User对象
@RequestMapping("/test")
@ResponseBody
public String test() {
System.out.println(user); //打印这个User对象
return "Hello SpringBoot!";
}
}
Le résultat d'exécution du programme lors de l'accès test
à la méthode :
四、@Service、@Controller、@Repository、@Component
annotation | illustrer |
---|---|
@Service | Pour la couche métier, la couche logique métier service est injectée dans spring le conteneur |
@Manette | conteneur controller d'injection de couche de contrôlespring |
@Dépôt | Conteneur dao d'injection de couche de persistancespring |
@Composant | conteneur domain d'injection communspring |
五、@ResponseBody、@RestController
annotation | illustrer |
---|---|
@ResponseBody | Agissez sur la méthode ou la classe, laissez le résultat de retour de la méthode être directement écrit dans HTTP response body , sans passer par l'analyseur de vue, et les données retournées seront affichées directement sur la page. |
@RestController | C'est une combinaison de @Controller et , agissant sur la classe, l'effet est égal à l'ajout de et @ResponseBody sur la classe@ResponseBody @Controller |
六、@RequestMapping、@GetMapping、@PostMapping
annotation | illustrer |
---|---|
@RequestMapping | url Utilisez cette annotation pour accéder via la configuration , qui peut get être ou publier |
@GetMapping | Utilisez cette annotation pour url accéder via la configuration et limiter get la méthode de requête |
@PostMapping | Utilisez cette annotation pour url accéder via la configuration et limiter post la méthode de requête |
七、@RequestParam、@RequestBody
annotation | illustrer |
---|---|
@RequestParam | Il est principalement utilisé pour recevoir url? les paramètres get ou post demandes suivants, tant qu'il y a des paramètres derrière, url? les paramètres correspondants peuvent être obtenus |
@RequestBody | Cette annotation est utilisée pour obtenir les données du corps de la requête ( body ), get il n'y a pas de corps de requête, elle est donc généralement utilisée pour post les requêtes |
- Dans
GET
les requêtes, vous ne pouvez pas utiliser@RequestBody
- Dans la requête, et
POST
peuvent être utilisés , mais s'ils sont utilisés , la configuration de la conversion des paramètres doit être unifiée.@RequestBody
@RequestParam
@RequestBody
- Peut utiliser plusieurs
@RequestParam
données de récupération,@RequestBody
pas