Spring Boot

本文详细介绍如何在SpringBoot项目中整合Druid数据库连接池监控、MybatisPlus ORM框架以及SpringSecurity权限框架。从创建工程、配置依赖、编写实体类、持久层接口、业务层实现、控制层,到添加权限控制,全面覆盖了开发流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、在spring initializr快速创建一个demo工程

浏览器访问:https://start.spring.io
在这里插入图片描述
然后进入idea>>File>>open打开工程
在这里插入图片描述

二、添加Druid

1.在pom.xml文件中添加依赖
在这里插入图片描述
2.配置application.yml文件
在这里插入图片描述
3.配置WebConfiguration

@Configuration
public class WebConfiguration  implements WebMvcConfigurer {

    /**
     * druidServlet注册
     */
    @Bean
    public ServletRegistrationBean druidServletRegistration() {
        ServletRegistrationBean registration = new ServletRegistrationBean(new StatViewServlet());
        registration.addUrlMappings("/druid/*");
        return registration;
    }

    /**
     * druid监控 配置URI拦截策略
     */
    @Bean
    public FilterRegistrationBean druidStatFilter() {
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
        //添加过滤规则.
        filterRegistrationBean.addUrlPatterns("/*");
        //添加不需要忽略的格式信息.
        filterRegistrationBean.addInitParameter(
                "exclusions", "/static/*,*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid,/druid/*");
        //用于session监控页面的用户名显示 需要登录后主动将username注入到session里
        filterRegistrationBean.addInitParameter("principalSessionName", "username");
        return filterRegistrationBean;
    }

    /**
     * druid数据库连接池监控
     */
    @Bean
    public DruidStatInterceptor druidStatInterceptor() {
        return new DruidStatInterceptor();
    }

    @Bean
    public JdkRegexpMethodPointcut druidStatPointcut() {
        JdkRegexpMethodPointcut druidStatPointcut = new JdkRegexpMethodPointcut();
        String patterns = "com.example.demo.service.*";
        //可以set多个
        druidStatPointcut.setPatterns(patterns);
        return druidStatPointcut;
    }

    /**
     * druid数据库连接池监控
     */
    @Bean
    public BeanTypeAutoProxyCreator beanTypeAutoProxyCreator() {
        BeanTypeAutoProxyCreator beanTypeAutoProxyCreator = new BeanTypeAutoProxyCreator();
        beanTypeAutoProxyCreator.setTargetBeanType(DruidDataSource.class);
        beanTypeAutoProxyCreator.setInterceptorNames("druidStatInterceptor");
        return beanTypeAutoProxyCreator;
    }

    /**
     * druid 为druidStatPointcut添加拦截
     */
    @Bean
    public Advisor druidStatAdvisor() {
        return new DefaultPointcutAdvisor(druidStatPointcut(), druidStatInterceptor());
    }
}

4.浏览器访问:http://localhost:8080/druid/
在这里插入图片描述

三、添加Mybatis Plus

1.添加依赖
2.配置application.yml

四、创建业务相关类

1.创建系统用户实体类

@Data
public class SysUser {

    private Long id;
    private String userName;
    private String passWord;
    private Date createTime;
    private Integer userAge;
    private String remark;
}

2.创建系统用户持久层

@Mapper
public interface SysUserDao extends BaseMapper<SysUser> {
}

3.创建系统用户业务层

public interface SysUserService {
}

@Service("SysUserService")
public class SysUserServiceImp extends ServiceImpl<SysUserDao, SysUser> implements SysUserService {

}

4.创建系统用户控制层

@RestController
public class SysUserController {

    @Autowired
    SysUserServiceImp sysUserServiceImp;

    @GetMapping("/getUser")
    public SysUser getUser(Long id){
        return sysUserServiceImp.getById(id);
    }

    @PostMapping("/insertUser")
    public String insertUser(SysUser sysUser){
        sysUser.setCreateTime(new Date());
        return sysUserServiceImp.save(sysUser)?"保存成功":"保存失败";
    }

    @PutMapping("/updateUser")
    public String updateUser(SysUser sysUser){
        return sysUserServiceImp.updateById(sysUser)?"修改成功":"修改失败";
    }

    @GetMapping("/getList")
    public List<SysUser> getList(){
        return sysUserServiceImp.list();
    }
}

五、添加权限框架Spring Security

1.添加依赖
2.浏览器访问http://localhost:8080
在这里插入图片描述
3.创建配置类

@Configuration
@EnableWebSecurity
public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                .antMatchers("/").permitAll()
                .anyRequest().authenticated()
                .and()
                .logout().permitAll()
                .and()
                .formLogin();
        http.csrf().disable();
    }

    @Override
    public void configure(WebSecurity web) throws Exception {
        web.ignoring().antMatchers("/js/**", "/css/**", "/images/**");
    }
}

4.添加接口方法

@GetMapping("/")
public String index(Long id){
    return "欢迎使用!";
}

5.创建自定义密码编解码类

public class MyPasswordEncoder implements PasswordEncoder {

    final static String ENCODER_PWD = "123456";

    @Override
    public String encode(CharSequence rawPassword) {
        return rawPassword + ENCODER_PWD;
    }

    @Override
    public boolean matches(CharSequence rawPassword, String encodedPassword) {
        return encodedPassword.equals(rawPassword+ENCODER_PWD);
    }
}

修改配置用户密码编解码方式

@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
    auth.inMemoryAuthentication().passwordEncoder(new MyPasswordEncoder()).withUser("admin").password(new MyPasswordEncoder().encode("123456")).roles("ADMIN");
}

6.访问http://localhost:8080/getList

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值