Spring DI
Configuration
Im Spring-Framework wird eine Konfigurationsdatei mit dem Namen Configuration an den DI-Container übergeben und "Diese Instanz in einem solchen Fall zurückgeben" festgelegt. Es gibt drei Arten von Konfigurationsdateien.
Die annotationsbasierte Konfiguration wird unten beschrieben.
@Configuration Gibt an, dass es sich um eine Konfigurationsklasse handelt.
AppConfig
package com.example;
@Configuration
public class AppConfig {
}
@Component Registrieren Sie die Klasse als Bean, die vom DI-Container verwaltet werden soll.
User
package com.example;
@Component
public class User {
public String getName(){
...
}
}
@ComponentScan Scannen Sie die Klasse mit @Component und registrieren Sie sie in DI als Bean. Das Scan-Ziel kann als Paket angegeben werden. Die Einstellungen für die zuvor erwähnte AppConfig-Klasse lauten wie folgt.
Configuration
package com.example;
@Configuration
@ComponentScan("com.example")
public class AppConfig {
}
Wenn Sie den DI-Container mit den obigen Anmerkungen verwenden, lautet der Code wie folgt.
DemoIoC
package com.example;
public class DemoIoC {
public static void main(String args[]){
//Erstellen Sie einen DI-Container und übergeben Sie eine Konfigurationsdatei
AnnotationConfigApplicationContext context =
new AnnotationConfigApplicationContext(AppConfig.class);
//Holen Sie sich Bean
User user = context.getBean(User.class);
System.out.println(User.getName())
}
}
Mit dem Spring-Framework können Sie Konfigurationen gruppieren und als Profile verwalten. Beispielsweise können die Konfiguration für die Entwicklung, die Konfiguration für das Testen und die Konfiguration für Produkte separat verwaltet und die Konfiguration einfach umgeschaltet werden.
@Profile Stellen Sie das Profil ein. Ändern Sie die Benutzerklassenhierarchie wie folgt und legen Sie das Profil fest.
User
package com.example;
public interface User {
public String getName();
}
UserDummy
package com.example;
@Component
@Profile("dev") //Richten Sie ein Profil mit dem Namen dev ein
public class UserDummy implements User {
...
}
UserMaster
package com.example;
@Component
@Profile("test") //Richten Sie ein Profil mit dem Namenstest ein
public class UserImpl implements User {
...
}
Legen Sie ein Profil fest und verwenden Sie die obige Benutzerklassenhierarchie.
DemoIoC
package com.example;
public class DemoIoC {
public static void main(String args[]){
//Erstellen Sie einen DI-Container
//Setze dev als Profil
AnnotationConfigApplicationContext context =
new AnnotationConfigApplicationContext();
context.register(AppConfig.class);
context.getEnvironment().addActiveProfile("dev");
context.refresh();
//Holen Sie sich Bean
//Die Implementierung von user ist UserDummy
User user = context.getBean(User.class);
System.out.println(User.getName())
}
}
Recommended Posts