Score %0 (0 correct0 incorrect20 unanswered)

Q1. Wie werden Filter in Spring Web verwendet?

  • Filter werden aufgerufen, bevor eine Anfrage den DispatcherServlet erreicht. Sie ermöglichen eine interceptionsartige, verkettete Verarbeitung von Webanfragen für Sicherheit, Timeouts und andere Zwecke.
  • Filter werden mit einem Prüfsummenalgorithmus verwendet, der ungültige Bytes aus dem Byte-Stream-Anforderungskörper filtert und die Verarbeitung von HTTP-Anforderungen aus dem DispatcherRequestServlet ermöglicht.
  • Filter werden mit einem Prüfsummenalgorithmus verwendet, der ungültige Bytes aus einem Oktet-Stream eines Mehrteil-Uploads filtert und eine verkettete Verarbeitung von WebDispatcherServlet-Anforderungen ermöglicht.
  • Filter werden verwendet, um Anforderungsparameter aus dem Byte-Stream-Anforderungskörper zu validieren und die Verarbeitung von Anfragen aus dem DispatcherRequestServlet zu ermöglichen.

Vergleich von HandlerInterceptors und Filtern in Spring MVC. Es gibt auch keinen DispatcherRequestServlet in Spring.

Q2. Wie wird eine Ressource im Kontext eines REST-Dienstes definiert?

  • Eine Ressource ist das tatsächliche Zeichenfolgenliteral, das eine URI bildet, die auf einem RESTful-Webdienst zugegriffen wird.
  • Es ist ein abstrakter Begriff, der ein typisiertes Objekt, Daten, Beziehungen und eine Reihe von Methoden repräsentiert, die über eine URI darauf zugreifen.
  • Ein REST-Dienst hat einen Pool von Ressourcen, die aus Speicherzuweisungen bestehen und die Verarbeitung einer Anfrage ermöglichen.
  • Eine Ressource für einen REST-Dienst ist eine explizite Zuweisung eines Threads oder CPU-Zyklen, um die Verarbeitung einer Anfrage zu ermöglichen.

Rest-Service in Spring

Q3. Welche davon ist eine gültige Advice-Annotation?

  • @AfterError
  • @AfterReturning
  • @AfterException
  • @AfterExecution

Spring Advice-Typen-Annotation

Q4. Was macht ein ViewResolver?

  • Es unterstützt die Internationalisierung von Webanwendungen, indem es die Gebietsschema des Benutzers erkennt.
  • Es generiert eine Ansicht, indem es einen logischen Ansichtsnamen, der von einer Controller-Methode zurückgegeben wird, auf eine Ansichtstechnologie abbildet.
  • Es erstellt eine eindeutige Ansicht, die vom Browser des Benutzers bestimmt wird, und unterstützt die Browserkompatibilität.
  • Es ordnet benutzerdefinierte Parameter SQL-Views in der Datenbank zu, um die Erstellung dynamischer Inhalte in der Antwort zu ermöglichen.

Ansichtsauflösung in Spring MVC

Q5. Wie werden Spring Data Repositories zur Laufzeit von Spring implementiert?

  • Spring generiert automatisch Code für Sie basierend auf Ihrer YAML-Konfiguration, die eine MethodInterceptor-Kette definiert, die Aufrufe an die Instanz abfängt und SQL dynamisch generiert.
  • Eine JDK-Proxyinstanz wird erstellt, die das Repository-Interface unterstützt, und ein MethodInterceptor fängt Aufrufe an die Instanz ab und leitet sie entsprechend weiter.
  • Der Spring-JDK-Proxy erstellt einen separaten Laufzeitprozess, der als Vermittler zwischen der Datenbank und dem Webserver fungiert, und fängt Aufrufe an die Instanz ab und bearbeitet Anfragen.
  • Spring generiert automatisch Code für Sie basierend auf Ihren XML-Konfigurationsdateien, die eine SpringMethodAutoGeneration-Fabrik definieren, die Aufrufe an die Instanz abfängt und dynamische Methoden generiert, die SQL dynamisch generieren.

Erklärte QnA

Q6. Was ist SpEL und wie wird es in Spring verwendet?

  • SpEL (Spring Expression Language) läuft in der JVM und kann als Ersatz für Groovy oder andere Sprachen verwendet werden.
  • SpEL (Spring Expression Language) unterstützt boolesche und relationale Operatoren sowie reguläre Ausdrücke und wird verwendet, um zur Laufzeit eine Struktur von Objekten abzufragen.
  • SpEL (Spring Expression Language) ermöglicht es Ihnen, Aufgaben wie das Erstellen von Artefakten und das Herunterladen von Objektabhängigkeiten zu erstellen, zu konfigurieren und auszuführen.
  • SpEL (Spring Expression Language) übersetzt nativ eine JVM-Sprache in eine andere, was eine größere Flexibilität ermöglicht.

Spring Expression-Dokumentation

Q7. Der Vorgang des Verknüpfens von Aspekten mit anderen Objekten zur Erstellung eines beratenen Objekts wird genannt

  • dynamisches Verketten
  • Banding
  • Weben
  • Verschachtelung

Q8. Wie werden JDK-Dynamische Proxys und CGLIB-Proxys in Spring verwendet?

  • JDK-Dynamischer Proxy kann nur ein Interface proxyen, daher wird es verwendet, wenn das Ziel mindestens ein Interface implementiert. Ein CGLIB-Proxy kann ein Proxy durch Subklassierung erstellen und wird verwendet, wenn das Ziel kein Interface implementiert.
  • Nur JDK-Dynamische Proxys werden im Spring Bean-Lebenszyklus verwendet. CGLIB-Proxys werden nur für die Integration mit anderen Frameworks verwendet.
  • Nur CGLIB-Proxys werden im Spring Bean-Lebenszyklus verwendet. JDK-Dynamische Proxys werden nur für die Integration mit anderen Frameworks verwendet.
  • JDK-Dynamischer Proxy kann nur eine abstrakte Klasse verwenden, die von einem Ziel erweitert wird. Ein CGLIB-Proxy kann einen Proxy durch Bytecode-Interweaving erstellen und wird verwendet, wenn das Ziel keine abstrakte Klasse erweitert.

Q9. Welches davon ist keine gültige Methode im JoinPoint-Interface?

  • getArgs()
  • getExceptions()
  • getSignature()

getTarget()

Q10. In welcher Reihenfolge werden die mit @PostConstruct annotierte Methode, die init-method-Parametermethode auf Beans und die afterPropertiesSet()-Methode ausgeführt?

  • 1. afterPropertiesSet() 2. init-method 3. @PostConstruct
  • 1. @PostConstruct 2. afterPropertiesSet() 3. init-method
  • 1. init-method 2. afterPropertiesSet() 3. @PostConstruct
  • Sie können diese Methoden nicht zusammen verwenden - Sie müssen nur eine wählen.

Q11. Was ist die Funktion der @Transactional-Annotation auf Klassenebene?

  • Es handelt sich um ein Transaktionsattribut, das von der spring.security.transactions.xml-Konfigurationsdatei konfiguriert wird und Spring's Transaktionsimplementierungs- und Validierungscode verwendet.
  • Es handelt sich um eine Transaktion, die aktiv durch den Bytecode einer Transaktion mit Spring's TransactionBytecodeValidator-Klasse validiert werden muss. Das Standardtransaktionsverhalten rollt bei Validierungsausnahme zurück, aber bei korrekter Validierung wird commit ausgeführt.
  • Es erstellt einen Proxy, der dieselben Interface(s) wie die annotierte Klasse implementiert, sodass Spring Verhaltensweisen vor, nach oder um Methodenaufrufe in das geprüfte Objekt injizieren kann.
  • Es handelt sich um eine Transaktion, die aktiv durch Spring's TransactionValidator-Klasse mit Spring's Transaktionsvalidierungscode validiert werden muss. Das Standardtransaktionsverhalten rollt bei Validierungsausnahme zurück.

Q12. Welches ist ein gültiges Beispiel für die Ausgabe dieses Codes (unter Berücksichtigung von Protokollierungsanweisungen)?

@SpringBootApplication
public class App {
     public static void main(String args[]) {
          SpringApplication.run(App.class, args);
          System.out.println("startup");
     }
}

public class Print implements InitializingBean {
     @Override
     public void afterPropertiesSet() throws Exception {
          System.out.println("init");
     }
}
  • Nichts wird gedruckt.
  • startup init
  • init
  • startup

Erklärung: Die SpringApplication.run-Methode gibt den erstellten Kontext zurück, sodass die Hauptmethode weiterhin ausgeführt wird und "startup" gedruckt wird. Die Klasse Print ist kein Spring Bean, da sie nicht mit @Component annotiert ist, daher wird sie nicht initialisiert.

Q13. Welche println-Anweisung würden Sie entfernen, um zu verhindern, dass dieser Code eine Nullpointer-Ausnahme wirft?

@Component
public class Test implements InitializingBean {
     @Autowired
     ApplicationContext context;
     @Autowired
     static SimpleDateFormat formatter;

     @Override
     public void afterPropertiesSet() throws Exception {
          System.out.println(context.containsBean("formatter") + " ");
          System.out.println(context.getBean("formatter").getClass());
          System.out.println(formatter.getClass());
          System.out.println(context.getClass());
     }
}

@Configuration
class TestConfig {
     @Bean
     public SimpleDateFormat formatter() {
          return new SimpleDateFormat();
     }
}
  • formatter.getClass()
  • context.getClass()
  • context.getBean("formatter").getClass()
  • context.containsBean("formatter")

Q14. Was ist die Wurzelschnittstelle zum Zugriff auf einen Spring-Bean-Container?

  • SpringInitContainer
  • ResourceLoader
  • ApplicationEventPublisher
  • BeanFactory

Q15. Welche Annotation kann innerhalb von Spring Security verwendet werden, um Sicherheit auf Methodenebene anzuwenden?

  • @Secured
  • @RequiresRole
  • @RestrictedTo
  • @SecurePath

Q16. Was ist das Ergebnis des Aufrufs der Map-Controller-Methode mit der HTTP-Anforderung GET localhost:8080/map?foo=foo&bar=bar?

@RestController
public class SampleController {

     @RequestMapping("/map")
     public String map(@RequestParam("bar") String foo, @RequestParam("foo") String bar) {
          return bar + foo;
     }
}
  • Es wird zur Laufzeit eine InvalidParameterNameMappingException geworfen.
  • barfoo
  • foobar
  • Es wird ein Statuscode von 400 Bad Request zurückgegeben.

Q17. Was ist der Zweck der @Lazy-Annotation und wann würde man sie verwenden?

  • Es verhindert, dass ein Bean erstellt und eingefügt wird, bis Sie einen bestimmten CLI-Befehl ausführen. Es reduziert die Komplexität in der Anwendung.
  • Es kann auf ein Bean angewendet werden, damit das Bean nicht in der Datenbank persistiert wird. Es reduziert die Anzahl der Datenbankoperationen.
  • Es kann auf ein Bean angewendet werden, damit das Bean erstellt und eingefügt wird, wenn es benötigt wird. Es kann dazu beitragen, die Startzeit Ihrer Anwendung zu beschleunigen.
  • Es verhindert, dass ein Bean erstellt und eingefügt wird, bis es eine HTTP-Anforderung an einen Rückruf-Hook erhält. Es reduziert den Speicherplatzbedarf.

Q18. Was ist Dependency Injection?

  • eine Methode, mit der Objekte Abhängigkeiten definieren, die sie benötigen, als Abstraktionen, die es dem Framework ermöglichen, sie an einem zentralen Ort zur Laufzeit zu instanziieren und zu konfigurieren.
  • ein Paradigma, bei dem abhängiger Code in den Bytecode einer Java-Anwendung auf einem Remote-Server eingefügt wird.
  • eine Möglichkeit, entfernte Abhängigkeiten in einer vorverpackten JAR-Datei vom Dateisystem einzufügen.
  • eine Möglichkeit, entfernte Abhängigkeiten in einer vorverpackten WAR-Datei vom Dateisystem einzufügen.

Q19. Was ist ein RESTful Webdienst?

  • Reactive Enterprise Status Transfer ist ein Webdienst, der eine Reihe von Richtlinien und technischen Einschränkungen für Webdienste umfasst, die eine Reihe von missionskritischen Ressourcen überwachen und benachrichtigen.
  • Representational State Transfer ist ein architektonischer Stil zur Erstellung von Webdiensten, der eine Client-Server-Architektur, Zustandslosigkeit, Zwischenspeicherung, ein geschichtetes System und eine einheitliche Schnittstelle umfasst.
  • Redundant Enumerated State Transfer ist ein

Webdienst, der Redundanz im Falle eines Ausfalls bereitstellt und technische Einschränkungen für Webdienste umreißt, die Zugriff auf Ressourcen haben.

  • Reactive Enterprise State Transfer ist ein Webdienst, der eine Reihe von Richtlinien und technischen Einschränkungen für Webdienste umfasst, die Zugriff auf Ressourcen haben und asynchroner Natur sind.

Q20. Was passiert, wenn eine Klasse mit der @Controller-Annotation annotiert ist?

  • Eine Controller-Bean-Definition wird im WebApplicationContext des Servlets definiert. Die Klasse wird als Webkomponente markiert, und Sie können Anfragen auf Controller-Methoden abbilden.
  • Eine Controller-Bean-Definition wird im Webkontext definiert, und das Web-Servlet wird als Komponente markiert, das kartierte Controller-Anforderungen aus einer XML-Konfigurationsdatei liest.
  • Eine Controller-Bean-Definition wird im Tomcat-Kontext definiert, und das Controller-Servlet wird als Webkomponente markiert, das kartierte Controller-Anforderungen aus einer YAML-Konfigurationsdatei liest.
  • Eine Controller-Bean-Definition wird im Servlet-Kontext definiert, und das Controller-Servlet wird als Komponente markiert, das kartierte Controller-Anforderungen aus einer XML-Konfigurationsdatei liest.