SpringBoot的常⽤API说明
1、SpringApplication 类
作⽤:⽤于启动 Spring Boot 的程序,根据传⼊的类的声明的注解来决定不同的启动⽅式
⽰例代码:
1package org.ranger;
2import org.springframework.boot.SpringApplication;
3import org.springframework.boot.autoconfigure.SpringBootApplication;
4//使⽤ SpringBoot ⾃动配置程序
5 @SpringBootApplication
6public class Application {
7public static void main(String[] args) {
8//执⾏当前类,根据@SpringBootApplication 的配置,启动 SpringBoot 程序
9 SpringApplication.run(Application.class, args);
10 }
11 }
2、@EnableAutoConfiguration 注解
注解的声明:
1 @SuppressWarnings("deprecation")
2 @Target(ElementType.TYPE)
3 @Retention(RetentionPolicy.RUNTIME)
4 @Documented @Inherited
5 @AutoConfigurationPackage @Import(EnableAutoConfigurationImportSelector.class)
6public @interface EnableAutoConfiguration {
7 String ENABLED_OVERRIDE_PROPERTY = "ableautoconfiguration";
8 Class<?>[] exclude() default {};
9 String[] excludeName() default {};
10 }
作⽤:启动程序时,告诉 SpringApplication 启动对象使⽤ SpringBoot 的默认配置
只要在 SpringBoot 项⽬的⼊⼝配置了 @EnableAutoConfiguration,SpringBoot 框架启动时就会⾃动根据你导⼊的 jar 包来加载 spring-boot-autoconfigure-1.5.4.RELEASE-sources.jar 中的 xxxAutoConfiguration 配置类,使⽤其默认配置。
属性说明:
exclude 属性:使⽤ Class 格式的⽅式,排除默认⾃动启动中不需要的配置类
excludeName 属性:使⽤类的限制名的⽅式,排序默认⾃动启动中不需要的配置类
3、@SpringBootApplication 注解
注解说明:
1 @Target(ElementType.TYPE)
2 @Retention(RetentionPolicy.RUNTIME)
3 @Documented
4 @Inherited
5 @SpringBootConfiguration
6 @EnableAutoConfiguration
7 @ComponentScan(excludeFilters = {
8 @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
9 @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
10public @interface SpringBootApplication {
11 @AliasFor(annotation = EnableAutoConfiguration.class, attribute = "exclude")
12 Class<?>[] exclude() default {};
13 @AliasFor(annotation = EnableAutoConfiguration.class, attribute = "excludeName")
14 String[] excludeName() default {};
15 @AliasFor(annotation = ComponentScan.class, attribute = "basePackages")
16 String[] scanBasePackages() default {};
17 @AliasFor(annotation = ComponentScan.class, attribute = "basePackageClasses")
18 Class<?>[] scanBasePackageClasses() default {};
19 }
根据注解的声明可以得出:@SpringBootApplication 注解也是启动 Springboot 的默认配置。只是在
@EnableAutoConfiguration 注解的基础上增加了扫描包@ComponentScan 和设置类为配置类 @SpringBootConfiguration 注解。实现了将给类设置为配置类、扫描指定范围的类创建对象到容器⾥⾯,并且⾃动加载Spring Boot默认配置。
属性说明:
① basePackages 属性 @SpringBootApplication 默认扫描的范围是使⽤该注解的当前的类的包以及⼦包,如果要指定其他范围的包,可以是 basePackages 指定。
② basePackageClasses 属性⽤于精确指定哪些类需要创建对象加载到 Spring 容器⾥⾯。
③ exclude 属性通过 Class 的⽅式排除不扫描的类,就是该类不创建对象。
④ excludeName 属性通过类的全限制名的⽅式,排除不扫描的类,指定的类不会在容器中创建对象。
4、@AutoConfigureBefore 注解
注解说明:
指定在 SpringBoot 框架⾃动配置的配置类执⾏完成之前,执⾏指定的⾃定义的配置类。如果放在 Application ⼊⼝类,表⽰在所有⾃动配置的配置类还没有可以就先加载⾃定义的配置类。
@AutoConfigureBefore 注解属性:
value:使⽤类的⽅式指定⾃动配置类
name:使⽤类的全限制名(字符串)类指定配置类
⽰例代码:
①创建⼀个普通的类,没有任何注解
utils;
2/**
3 * 创建⼀个没有扫描注⼊容器注解的类
4 * @author ranger
5* */
6public class TestUtils {
7/**
8 * 返回测试信息
9 * @return
10*/
11public String test(){
12return "-测试注⼊对象成功-";
13 }
14 }
②创建⼀个⾃定义配置类,注⼊普通的类的Spring容器
nfig;
2
3import t.annotation.Bean;
4import t.annotation.Configuration;
5
nfig;
7
8import org.springframework.dition.ConditionalOnMissingBean;
9import t.annotation.Bean;
10import t.annotation.Configuration;
11
utils.TestUtils;
13
14/**
15 * 创建⼀个⾃定义的配置类
16 * @author ranger
17 *
18*/
19 @Configuration
20public class MyConfiguration {
21/**
22 * 返回⼀个对象到容器
23 * @return
24*/
25 @Bean(name="testUtils")
26//表⽰如果Spring容器有TestUtils的对象就不执⾏这个⽅法在创建⼀次了。
27 @ConditionalOnMissingBean(TestUtils.class)
28public TestUtils getTestUtils(){
29 TestUtils testUtils=new TestUtils();
30return testUtils;
31 }
32
33 }
③在⼊⼝类配置加⼊⾃定义配置类
;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.boot.autoconfigure.SpringBootApplication;
nfig.MyConfiguration;
//使⽤SpringBoot⾃动配置程序
@SpringBootApplication
//在⾃动配置的配置类之前启动⾃定义的配置类
@AutoConfigureBefore(value=MyConfiguration.class)
public class Application {
public static void main(String[] args) {
/
/执⾏当前类,根据@SpringBootApplication的配置,启动SpringBoot程序
SpringApplication.run(Application.class, args);
}
}
④在 Controller ⾥⾯使⽤这个注⼊的对象
ntroller;
2
3import org.springframework.beans.factory.annotation.Autowired;
4import org.springframework.stereotype.Controller;
5import org.springframework.web.bind.annotation.RequestMapping;
6import org.springframework.web.bind.annotation.ResponseBody;
7
utils.TestUtils;
9
10 @Controller
11public class HelloController {
12
13 @Autowired
14private TestUtils testUtils;
springboot框架是干嘛的15
16 @RequestMapping(value="/")
17 @ResponseBody
18public String say(){
19 System.out.st());
st();
21 }
22
23 }
⑤测试,成功
5、@AutoConfigureAfter注解
作⽤:指定在SpringBoot框架⾃动配置的配置类执⾏完成之后,然后执⾏指定的⾃定义的配置类。
6、@SpringBootTest注解
注解说明:⽤于使⽤JUnit测试SpringBoot程序,启动SpringBoot框架。测试SpringBoot⼀定要加上。⽰例代码:
st;
2
3import java.sql.SQLException;
4
5import javax.sql.DataSource;
6
7import org.junit.Test;
8import org.junit.runner.RunWith;
9import org.springframework.beans.factory.annotation.Autowired;
10import org.st.context.SpringBootTest;
11import st.context.junit4.SpringJUnit4ClassRunner;
12
13 @RunWith(SpringJUnit4ClassRunner.class)
14//如果不加该注解,⽆法启动SpringBoot
15 @SpringBootTest
16public class DataSourceTest {
17
18 @Autowired
19private DataSource dataSource;
20
21 @Test
22public void dataSource() {
23try {
24 System.out.Connection());
25 } catch (SQLException e) {
26// TODO Auto-generated catch block
27 e.printStackTrace();
28 }
29 }
30
31 }
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论