SpringBoot整合Web框架
Spring Boot可以轻松创建独立的、基于Spring的生产级应用程序
它可以让你“运行即可”。
大多数Spring Boot应用程序只需要少量的Spring配置。
SpringBoot自动生成部分内容:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringBootWeb20220311Application {
public static void main(String[] args) {
SpringApplication.run(SpringBootWeb20220311Application.class, args);
}
}
一:一站式开发
当我们写好我们的SpringBoot的时候,直接就可以运行,无需配置
二:数据注入方式
1.先准备一个外部注入Student实体类
public class Student {
private int age;
private String name;
private String sex;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
2.数据注入测试
import com.example.entry.Student;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
@Controller
public class MainController {
// 直接给数据源头赋值
@Value("魏振华")
// 写入数据源
@Resource
String name;
// requesMapping测试地址:index,
@RequestMapping("/index")
@ResponseBody
public String index(){
return "你好,欢迎访问"+name;//这里的name是用来测试数据注入是否成功
}
// 这里用于测试直接注入的student数据
@RequestMapping("/student")
@ResponseBody
public Student Student(){
Student student=new Student();
student.setAge(12);
student.setName("wei");
student.setSex("男");
return student;
}
}
三:SpringBoot整合security
1.导入依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
此时我们再次访问我们的网址会自动进行security操作,控制台会自动生成一个用户名和密码用我们使用
导入依赖后,我们直接启动SpringBoot应用程序,可以发现SpringSecurity已经生效了。
并且SpringSecurity会自动为我们生成一个默认用户user,它的密码会出现在日志中:
2022-01-06 23:10:51.329 INFO 2901 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2022-01-06 23:10:51.329 INFO 2901 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.56]
2022-01-06 23:10:51.350 INFO 2901 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2022-01-06 23:10:51.351 INFO 2901 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 341 ms
2022-01-06 23:10:51.469 INFO 2901 --- [ main] .s.s.UserDetailsServiceAutoConfiguration :
Using generated security password: ff24bee3-e1b7-4309-9609-d32618baf5cb
其中ff24bee3-e1b7-4309-9609-d32618baf5cb就是随机生成的一个密码,我们可以使用此用户登录。
我们也可以在配置文件中直接配置:
2.在properties文件中更改security账号密码
spring.security.name=user
spring.security.user.password=123456
实际上这样的配置方式就是一个inMemoryAuthentication,只是我们可以直接配置而已。
当然,页面的控制和数据库验证我们还是需要提供WebSecurityConfigurerAdapter的实现类去完成:
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@Configuration
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/login").permitAll()
.anyRequest().hasRole("user")
.and()
.formLogin();
}
}
注意这里不需要再添加@EnableWebSecurity了,因为starter依赖已经帮我们添加了。
使用了SpringBoot之后,我们发现,需要什么功能,只需要导入对应的starter依赖即可,甚至都不需要你去进行额外的配置,你只需要关注依赖本身的必要设置即可,大大提高了我们的开发效率。