Beispiel: @SpringBootApplication
Unter SpringBoot
den vom Framework automatisch für uns erstellten Startklassen @SpringBootApplication
werden Annotations-Tags zum Ändern der Startklasse verwendet.
@SpringBootApplication
Das Annotation-Tag ist eigentlich ein zusammengesetztes Annotation-Tag, einschließlich @EnableAutoConfiguration
, @ComponentScan
das normalerweise in der Hauptklasse verwendet wird
Anmerkung | veranschaulichen |
---|---|
@SpringBootApplication | Wird verwendet, um Startklassen zur Änderung zu deklarieren |
@EnableAutoConfiguration | Es handelt sich um springboot die Kernanmerkung für die automatische Konfiguration, über die spring die Anwendung bean in den Container eingefügt werden muss |
@ComponentScan | ioc Es wird verwendet, um die durch Annotationen identifizierten Klassen automatisch zu scannen und im Container zu generieren bean . Der Standard-Scanbereich sind @ComponentScan die Klassen im Konfigurationsklassenpaket und die Unterpakete, in denen sich die Annotationen befinden |
Zwei, @Configuration, @Bean
Anmerkung | veranschaulichen |
---|---|
@Aufbau | Handeln Sie auf die Klasse , um den Container (Anwendungskontext) zu konfigurieren , was der Verwendung der Klasse als Konfigurationsdatei spring entsprichtspring xml |
@Bohne | Erstellen Sie bean ein Objekt und fügen Sie es dem Container hinzu, indem Sie auf die Methode reagieren |
Beispiel:
SSM
Wenn wir während der Integration des nativen Frameworks IOC
ein benutzerdefiniertes Objekt zum Container hinzufügen möchten, müssen wir die Inhaltsdeklaration des folgenden Tags
unter Spring
dem Heel-Tag der vom Framework verwendeten Konfigurationsdatei hinzufügen:
<bean id="user" class="com.qf.testspringboot.pojo.User">
<property name="id" value="1"/>
<property name="username" value="张三"/>
<property name="age" value="22"/>
</bean>
Aber im SpringBoot
Framework dürfen wir IOC
benutzerdefinierte Objekte direkt in den Container einfügen, indem wir Java-Objekte erstellen und zurückgeben.
Dieser Prozess hängt von @Configuration
Anmerkungs-Tags und @Bean
Anmerkungs-Tags ab.
Zuerst bereiten wir eine User
Klasse vor:
@Data //记得要导入Lombok相关的依赖
@NoArgsConstructor
@AllArgsConstructor
public class User {
private Integer id;
private String username;
private Integer age;
}
Erstellen Sie dann eine UserConfiguration
Klasse und verwenden Sie @Configuration
das Annotation-Tag für diese Klasse, um zu deklarieren, dass es sich bei dieser Klasse um eine Konfigurationsklasse handelt:
@Configuration
public class UserConfiguration {
}
Erstellen Sie eine Methode in dieser Klasse. Der Rückgabewert der Methode ist User
der Typ und der Methodenname ist IOC
der Objektname des injizierten Objekts im Container. Verwenden Sie @Bean
die Annotationsbezeichnung für diese Methode:
@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;
}
}
An diesem Punkt ist der logische Ablauf für SpringBoot
das Framework zum Scannen und IOC
Einfügen von Objekten in den Container wie folgt:
- Wenn das SpringBoot-Framework
@Configuration
den mit Annotations-Tags versehenen Typ scannt, betrachtet es diese Klasse als Konfigurationsklasse. @Bean
Das Rückgabewertobjekt der mit Annotations-Tags versehenen Methode in der Konfigurationsklasse wird automatischIOC
zur Speicherung in den Container eingefügt.@Bean
Der Datentyp des Rückgabewerts der Annotation-Tag-Dekorationsmethode entspricht dem Attributwert des Tagsclass
.- Standardmäßig
@Bean
entspricht der Methodenname der mit dem Annotations-Tag dekorierten Methode demid
Attributwert des Tags, dh demIOC
Objektnamen des Objekts im Container.
Auf diese Weise können wir XML
problemlos IOC
benutzerdefinierte Java-Objekte in den Container einfügen, ohne Konfigurationsdateien zu verwenden.
3. @AutoWired
@Autowired
Standardmäßig wird es nach Typ zusammengestellt, was häufig in Implementierungsklassen der Business-Schicht und Implementierungsklassen der Persistenzschicht verwendet wird
Beispiel:
In TestController
der Klasse @Autowired
wird ein Objekt automatisch über das Annotation-Tag eingefügt User
. Wenn test
auf die Methode zugegriffen wird, User
wird das Objekt gedruckt:
@Controller //SpringMVC当中的注解标签都还能用
public class TestController {
@Autowired
private User user; //自动注入自定义的User对象
@RequestMapping("/test")
@ResponseBody
public String test() {
System.out.println(user); //打印这个User对象
return "Hello SpringBoot!";
}
}
Das laufende Ergebnis des Programms beim Zugriff auf test
die Methode:
四、@Service、@Controller、@Repository、@Component
Anmerkung | veranschaulichen |
---|---|
@Service | Für die Geschäftsschicht wird die Geschäftslogikschicht in den Container service eingefügtspring |
@Regler | Kontrollschicht - controller Injektionsbehälterspring |
@Repository | dao Injektionsbehälter spring für Persistenzschicht |
@Komponente | gemeinsamer domain Injektionsbehälter spring _ |
Beispiel: @ResponseBody und @RestController
Anmerkung | veranschaulichen |
---|---|
@ResponseBody | Handeln Sie auf die Methode oder Klasse, lassen Sie das Rückgabeergebnis der Methode direkt in schreiben HTTP response body , ohne den Ansichtsparser zu durchlaufen, und die zurückgegebenen Daten werden direkt auf der Seite angezeigt. |
@RestController | Es handelt sich um eine Kombination aus @Controller und , die auf die Klasse einwirkt. Die Wirkung ist gleich dem Hinzufügen von und @ResponseBody auf die Klasse@ResponseBody @Controller |
六、@RequestMapping、@GetMapping、@PostMapping
Anmerkung | veranschaulichen |
---|---|
@RequestMapping | Verwenden Sie diese Anmerkung, um über die Konfiguration url zuzugreifen , die get entweder sein oder posten kann |
@GetMapping | Verwenden Sie diese Anmerkung, um url über die Konfiguration zuzugreifen und get die Anforderungsmethode einzuschränken |
@PostMapping | Verwenden Sie diese Anmerkung, um url über die Konfiguration zuzugreifen und post die Anforderungsmethode einzuschränken |
Beispiel: @RequestParam und @RequestBody
Anmerkung | veranschaulichen |
---|---|
@RequestParam | Es wird hauptsächlich zum Empfangen url? der folgenden Parameter get oder post Anforderungen verwendet. Solange Parameter dahinter stehen, url? können die entsprechenden Parameter abgerufen werden |
@RequestBody | Diese Annotation wird verwendet, um Daten zum Anforderungshauptteil abzurufen ( body ), get es gibt keinen Anforderungshauptteil und wird daher im Allgemeinen für post Anfragen verwendet |
- In
GET
Anfragen können Sie nicht verwenden@RequestBody
- In der Anfrage können und
POST
verwendet werden . Bei Verwendung muss jedoch die Konfiguration der Parameterkonvertierung vereinheitlicht werden.@RequestBody
@RequestParam
@RequestBody
- Kann mehrere
@RequestParam
Abrufdaten verwenden,@RequestBody
nicht