註解
-
@Configuration
-
spring的配置的時候使用此註解
-
@Configuration(proxyBeanMethods=false)
配置爲jdk動態代理,沒有實現的接口所以false -
注意spring boot 2.2版本可以使用
proxyBeanMethods=false
-
代理模式spring會自動選擇也可以直接使用
@Configuration
- 你不需要把所有的
@Configuration
東西都放在一個班級裏(班級舉例),@Import
註釋可以用於導入額外的配置類。 -
或者,您可以使用
@ComponentScan
自動獲取所有Spring組件,包括@Configuration
類。 -
@EnableAutoConfiguration
-
默認開啓@SpringBootApplication包含,自動裝配配置類
-
@EnableAutoConfiguration(exclude={排除的配置類.class})
-
如果發現正在應用您不需要的特定自動配置類,則可以使用exclude屬性
@EnableAutoConfiguration
禁用 -
例如替換默認DataSourceAutoConfiguration.class 數據配置
-
@Import
-
導入的類必須是@Configuration配置類,
@Import
註釋可以用於導入額外的配置類。 -
例如這個配置類獲取另一個配置類消息
-
@ComponentScan
-
默認開啓會掃描WebApplication類所屬包,例如:WebApplication在com.cn下掃描com.cn
-
@Component
-
單例模式 自動裝配Bean:在自動檢測的組件的情況下將變爲Spring bean
-
@Bean
-
單例模式 註冊Bean:@Bean 需要在配置類中使用,即類上需要加上@Configuration註解
-
第三方庫中的組件裝配到你的應用中,在這種情況下,是沒有辦法在它的類上添加@Component註解的
-
@ImportResource
-
註釋來加載配置文件例如:@ImportResource("classpath:test.xml")
項目啓動控制檯打印
//CommandLineRunner或ApplicationRunner
@Component
public class Test implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
System.out.println("----我想打印的內容爲123----");
}
}
申請退出
- 每個都
SpringApplication
註冊一個與JVM的關閉鉤子,以確保ApplicationContext
在退出時正常關閉。可以使用所有標準的Spring生命週期回調(例如DisposableBean
接口或@PreDestroy
註釋)。 - 此外,
org.springframework.boot.ExitCodeGenerator
如果bean 在SpringApplication.exit()
調用時希望返回特定的退出代碼,則可以實現該接口。然後可以傳遞此退出代碼System.exit()
以將其作爲狀態代碼返回,如以下示例所示: -
@SpringBootApplication public class ExitCodeApplication { @Bean public ExitCodeGenerator exitCodeGenerator() { return () -> 42; } public static void main(String[] args) { System.exit(SpringApplication.exit(SpringApplication.run(ExitCodeApplication.class, args))); } }
Spring Boot 配置文件相關
-
配置隨機值
-
my.secret=${random.value} my.number=${random.int} my.bignumber=${random.long} my.uuid=${random.uuid} my.number.less.than.ten=${random.int(10)} my.number.in.range=${random.int[1024,65536]}
自定義配置
-
@Getter @Setter @ConfigurationProperties(prefix = "project.security")//配置前綴 @EnableConfigurationProperties(SecurityProperties.class) public class SecurityProperties { // 免認證靜態資源路徑 private String[] anonResourcesUrl; //超時時間默認1小時 private Duration sessionTimeout = Duration.ofHours(1); //超時時間默認5分鐘 private Duration redisTimeout = Duration.ofMinutes(5); //超時時間默認1小時 private int cookieTimeout = 60 * 60; //登錄地址 private String loginUrl; //退出地址 private String logoutUrl; }
#自定義配置 project: security: #免認證靜態資源路徑 anon-resources-url: /error,/login,/logout,/other/** #登錄地址 login-url: /login #退出地址 logout-url: /logout #一小時 session-timeout: PT1H #3600秒 cookie-timeout: 3600 #5分鐘 redis-timeout: PT5M
讀取配置文件信息 ( 以下靜態方法不能讀取)
-
public class Test { @Autowired private SecurityProperties securityProperties; @Value("${project.logout-url}") private String url; public void test() { System.out.println(securityProperties.getLogoutUrl()); System.out.println(url); } }
靜態方法讀取
-
public class Test { private static int cookieTimeout; private static void getProperties() { try { Properties properties = new Properties(); InputStream stream = CookiesUtils.class.getClassLoader().getResourceAsStream("application.yml"); properties.load(stream); String property = properties.getProperty("cookie-timeout"); cookieTimeout = Integer.valueOf(property); } catch (IOException e) { } } public static void test() { getProperties(); System.out.println(cookieTimeout); } }
屬性中的佔位符
-
#tocmat server: session: #獲取其它配置信息的值 timeout: ${project.security.session-timeout} #自定義配置 project: security: #一小時 session-timeout: PT1H
-
下一篇: Spring MVC