Springboot对于之前各种配置文件进行了注解简化
1.依赖(pom.xml)
<!-- 每个Springboot项目都应该继承 spring-boot-starter-parent -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
<relativePath/>
</parent>
<!-- 坐标 -->
<groupId>com.atguigu.springboot</groupId>
<artifactId>SpringBoot-Auto</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>SpringBoot-Auto</name>
<description>Demo project for Spring Boot</description>
<!-- 声明属性 -->
<properties>
<java.version>1.8</java.version>
</properties>
<!-- 依赖 -->
<dependencies>
<!-- 每个springBoot项目都有 spring-boot-starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!-- Springboot对Junit的集成 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<!-- Springboot对maven的集成 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
2.注解
(1)使用@Controller 注解
在对应的方法上,视图解析器可以解析return 的jsp,html页面,并且跳转到相应页面
若返回json等内容到页面,则需要加@ResponseBody注解
(2)@RestController注解
相当于@Controller+@ResponseBody两个注解的结合,返回json数据不需要在方法前面加@ResponseBody注解了,但使用@RestController这个注解,就不能返回jsp,html页面,视图解析器无法解析jsp,html页面
(3)@Autowired(自动注入)
@Autowired表示会自动创建一个被修饰类的对象,这样就不需要再去通过new来创建了
(4)@RequestParam
public ResponseResult<List<User>(@RequestParam(required=false,defaultValue="0",value="page")int pageNum)
1)value:请求中传入参数的名称,如果不设置后台接口的value值,则会默认为该变量名。比如上面代码第一个参数如果不设置value="page",则前端传入的参数名必须为pageNum,否则在后台接口中pageNum将接收不到对应的数据(个人理解:首先,如果不使用@RequestParam,即不设置value,则请求url传入即为pageNum,即设置的整个形参名;然后,如果设置了value,则请求url传入必须为设置的page,其他无效)
2)required:该参数是否为必传项。默认是true,表示请求中一定要传入对应的参数,否则会报404错误,如果设置为false时,当请求中没有此参数,将会默认为null,而对于基本数据类型的变量,则必须有值,这时会抛出空指针异常。如果允许空值,则接口中变量需要使用包装类来声明。
3)defaultValue:参数的默认值,如果请求中没有同名的参数时,该变量默认为此值。注意默认值可以使用SpEL表达式,如"#{systemProperties['java.vm.version']}"
如果在请求中传入多个同名参数,比如:url?userName=zhl&userName=holley时怎么办?
其实此时传入的数据格式是:"zhl,holley",即多个数据之间使用逗号分隔开,在后台接口中可以使用数组或者list类型的变量来接收:
public String requestparam8(@RequestParam(value="userName") String [] userNames)
或者
public String requestparam8(@RequestParam(value="list") List list)
4)@MapperScan
指定要变成实现类的接口所在的包,然后包下面的所有接口在编译之后都会生成相应的实现类
添加位置:是在Springboot启动类上面添加,
@SpringBootApplication
@MapperScan("com.winter.dao")
public class SpringbootMybatisDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootMybatisDemoApplication.class, args);
}
}
5)@Configuration
@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法
6)@Bean
@Bean注解作用于方法上,用于告诉方法,产生一个Bean对象,然后这个Bean对象交给Spring管理
未指定bean 的名称,默认采用的是 "方法名" + "首字母小写"的配置方式(太抽象了,理解不了)
7)@Value
① ${ property : default_value }
② #{ obj.property? :default_value }
第一个注入的是外部配置文件对应的property,第二个则是SpEL表达式对应的内容。 第二个则需要注入某个对象的属性
网友评论