SpringBoot容器相關注解
阿新 • • 發佈:2021-08-12
1.@Configuration 配置類
User bean類:
package com.ttpfx.bean;
public class User {
private String name;
private int age;
}
AppConfig 配置類:
@Configuration(proxyBeanMethods = false)
public class AppConfig {
@Bean
public User user() {
return new User("zhangsan", 30);
}
}
主程式類:
@SpringBootApplication public class MainApplication { public static void main(String[] args) { ConfigurableApplicationContext context = SpringApplication.run(MainApplication.class, args); // 容器獲取User User user1 = context.getBean(User.class); User user2 = context.getBean(User.class); // 呼叫AppConfig方法獲取User AppConfig appConfig = context.getBean(AppConfig.class); User user3 = appConfig.user(); System.out.println(user1 == user2); System.out.println(user1 == user3); } }
proxyBeanMethods屬性說明:
proxyBeanMethods預設為true,為true時呼叫配置類的方法得到的User類是容器中的元件類,即user1 == user3 為true
proxyBeanMethods為false時,呼叫配置類的方法得到的User類是重新例項化的,即user1 == user3 為false
2. @Import
匯入元件,可用於匯入第三方類,匯入元件名為全類名
Pet bean類:
package com.ttpfx.bean;
public class Pet {
private String name;
}
AppConfig 配置類:
@Configuration()
@Import({Pet.class})
public class AppConfig {
}
主程式類:
@SpringBootApplication public class MainApplication { public static void main(String[] args) { ConfigurableApplicationContext context = SpringApplication.run(MainApplication.class, args); System.out.println(context.containsBean("com.ttpfx.bean.Pet")); } }
3. @Conditional系列
當符合某種條件時,配置類才會生效:
@Configuration
//@ConditionalOnBean(Pet.class)
@ConditionalOnMissingBean(Pet.class)
public class AppConfig {
@Bean
public User user() {
return new User("zhangsan", 30);
}
}
4. @ImportResource
引入xml配置檔案
配置類:
@Configuration
@ImportResource("beans.xml")
public class AppConfig {
}
xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="zhangsan" class="com.ttpfx.bean.User">
<property name="name" value="張三"></property>
<property name="age" value="20"></property>
</bean>
<bean id="lisi" class="com.ttpfx.bean.User">
<property name="name" value="李四"></property>
<property name="age" value="20"></property>
</bean>
</beans>
5. ConfigurationProperties 配置繫結
application.properties:
user.wangwu.name=wangwu
user.wangwu.age=30
用法1:@ConfigurationProperties + @Component
User:
@Component
@ConfigurationProperties(prefix = "user.wangwu")
public class User {
private String name;
private int age;
}
用法2:@ConfigurationProperties + @EnableConfigurationProperties
User:
@ConfigurationProperties(prefix = "user.wangwu")
public class User {
private String name;
private int age;
}
配置類:
@Configuration
@EnableConfigurationProperties({User.class})
public class AppConfig {
}