Les annotations dans le cadre de printemps sont utilisées pour marquer une classe définie par une classe. Dans la configuration basée sur Java de Spring, cette annotation est très importante. @Configuration
Annotations, Spring le traitera comme une classe de configuration et le traite pour générer et gérer le bean de printemps. Ce type contient généralement une ou plusieurs annotations @Configuration
. @Bean
Cette classe devient la source de la définition du bean et Spring utilisera ces définitions pour définir le contexte de l'application.
Spring générera la sous-classe basée sur CGLIB (proxy) pour s'assurer que la méthode renvoie la même instance unique d'exemple par défaut. Ce comportement est appelé mode complet
. Si vous n'effectuez pas d'agent, appelez la méthode plusieurs fois peut créer plusieurs instances. @Bean
@Bean
intégré aux composants
annotations), la classe des annotations peut être explicitement définie par, et le ressort est autorisé à numériser automatiquement et à enregistrer d'autres grains.
@ComponentScan
Autoriser l'injection @SpringBootApplication
@Configuration
Exemple de base
@Configuration
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class AppConfig { @Bean public MyService myService() { return new MyServiceImpl(); } @Bean public MyController myController() { return new MyController(myService()); } }
myController()
myService()
Selon les fonctions (telles que DataConfig, ServiceConfig et WebConfig), la configuration est divisée en plusieurs classes. Cela améliore la lisibilité et la maintenance. MyService
3. <用> Utilisez @componentscan pour scanner
@Configuration public class DataConfig { @Bean public DataSource dataSource() { // 配置并返回数据源 } } @Configuration public class ServiceConfig { @Bean public UserService userService() { return new UserServiceImpl(); } }
. @Value
@ConfigurationProperties
@Configuration public class AppConfig { @Value("${app.name}") private String appName; @Bean public AppService appService() { return new AppService(appName); } }
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class AppConfig { @Bean public MyService myService() { return new MyServiceImpl(); } @Bean public MyController myController() { return new MyController(myService()); } }
. @ConfigurationProperties
@Value
@Configuration public class DataConfig { @Bean public DataSource dataSource() { // 配置并返回数据源 } } @Configuration public class ServiceConfig { @Bean public UserService userService() { return new UserServiceImpl(); } }
@Configuration
new
<误> Mauvaise écriture: <循> Dépendance du cyclone
Soyez prudent lors de la définition du haricot mutuellement dépendant, car il entraînera une dépendance de la circulation.@Configuration public class AppConfig { @Value("${app.name}") private String appName; @Bean public AppService appService() { return new AppService(appName); } }
<载> La méthode @Bean Évitez la méthode d'annotation @Lazy
de ré-chargement, car elle peut provoquer des résultats inattendus.
<理> Restrictions d'agent Le mécanisme de l'agence de @Bean
n'est pas efficace lorsque la classe n'est pas définitive. Évitez de marquer la classe de configuration à finir.
<谨> Utilisez soigneusement @Component Évitez de mélanger et @Configuration
dans la même classe. Cela peut conduire à des comportements inattendus, car la méthode de traitement
en utilisant des exemples avancés d'injects @Component
@Configuration
@Configuration
@Configuration @ComponentScan(basePackages = "com.example.myapp") public class AppConfig { // 必要时使用显式Bean }
DataSource
JdbcTemplate
meilleure pratique @Configuration
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!