框架的配置与使用

本文详细介绍了SpringBoot和SpringCloud的配置与使用,包括SpringBoot的实用配置、多环境配置、安全配置、定时任务,以及SpringCloud的服务发现、负载均衡、配置中心、API网关等内容。此外,还涉及Mybatis、Shiro、Redis缓存、分页插件、Log4j的配置与应用。
摘要由CSDN通过智能技术生成

实用配置:

  • MybatisConfig.xml

    <?xml version="1.0" encoding="UTF-8"?>
    
    <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-config.dtd">
    
    <configuration>
        <!--日志打印-->
         <settings>
             <setting name="logImpl" value="STDOUT_LOGGING" />
         </settings>
    </configuration>
    
  • damo.xml

    <?xml version="1.0" encoding="UTF-8"?>
    
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN "
    
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    
    <mapper namespace="demo">
    
    </mapper>
    

SpringBoot

各文件作用

  • static:静态网页

  • templates:模板

  • public:公共资源

    注:springboot个文件默认配置

完整的配置信息

server:
  port: 8080
  servlet:
    context-path: /gok
spring:
  datasource:
    username: root
    password: 123456
    url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC&nullCatalogMeansCurrent=true
    driver-class-name: com.mysql.jdbc.Driver
  thymeleaf:
    prefix: classpath:/templates/
    suffix: .html
    #    文件上传配置
  servlet: 
    multipart:
      enabled: true
      max-request-size: 10MB
      max-file-size: 10MB
mybatis:
  mapper-locations: classpath:/mappers/*.xml
logging:
  level:
    com.example.demo.daos: debug

配置启动界面baner

  • 在resources下创建banner.txt

  • [字符网站]: (http://patorjk.com/software/taag/#p=display&f=3D%20Diagonal&t=D%20S%20K “字符网站”

Application Version: ${ruoyi.version}
Spring Boot Version: ${spring-boot.version}

//                          _ooOoo_                               //
//                         o8888888o                              //
//                         88" . "88                              //
//                         (| ^_^ |)                              //
//                         O\  =  /O                              //
//                      ____/`---'\____                           //
//                    .'  \\|     |//  `.                         //
//                   /  \\|||  :  |||//  \                        //
//                  /  _||||| -:- |||||-  \                       //
//                  |   | \\\  -  /// |   |                       //
//                  | \_|  ''\---/''  |   |                       //
//                  \  .-\__  `-`  ___/-. /                       //
//                ___`. .'  /--.--\  `. . ___                     //
//              ."" '<  `.___\_<|>_/___.'  >'"".                  //
//            | | :  `- \`.;`\ _ /`;.`/ - ` : | |                 //
//            \  \ `-.   \_ __\ /__ _/   .-` /  /                 //
//      ========`-.____`-.___\_____/___.-`____.-'========         //
//                           `=---='                              //
//      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^        //
//             佛祖保佑       永不宕机      永无BUG                 //

配置favicon

  • 创建favicon.ico (图标名不能变) 放置在类路径根目录

    META-INF/resources/
    public/
    static/
    
    
  • 在线生成网址:

热部署

  • 引入依赖(创建SpringBoot时可以勾选该模块)
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
 </dependency>
  • IDEA设置

    进入设置setting,Build,Execut, Deployment -> Compiler 勾选右侧的Build Project automatically

    开启项目运行时自动build,在打开的页面上快捷键ctrl + shift + a 搜索命令:registry –> 勾选compiler.automake.allow.when.app.running*

    或者:开启idea自动make功能

    CTRL + SHIFT + A --> 查找make project automatically --> 选中

    CTRL + SHIFT + A --> 查找Registry --> 找到并勾选compiler.automake.allow.when.app.running

多环境配置

  • 不同环境

    • application-dev.yml(开发环境)
    • application-test.yml(测试环境)
    • application-uat.yml(预发布)
    • application-pro.yml(生产环境)
  • 环境更改:application.yml

    spring:
      profiles:
        active: dev
    

拦截器使用

  • 类编写Ecoding:

    public class Ecoding implements HandlerInterceptor
    
  • MyWebAppConfig

    @Configuration
    public class MyWebAppConfig implements WebMvcConfigurer {
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            WebMvcConfigurer.super.addInterceptors(registry);
            registry.addInterceptor(new UserFilter()).addPathPatterns("/**");
            String[] excludePath={"/common/**","/index.html"};
            registry.addInterceptor(new UserFilter()).excludePathPatterns(excludePath);
        }
    }
    

Mybatis的使用

    @Insert("insert into user (name,psw) values(#{name},#{psw})")
    @Options(useGeneratedKeys = true,keyProperty = "id")
    public int addUser(User user);

自定义数据源配置

@Configuration
public class MultipleDBConfig {
    @Bean(name ="mysqlDB")
    public DataSource Mysql(){
        DruidDataSource dataSource=new DruidDataSource();
        dataSource.setUrl("jdbc:mysql://localhost:3306/ee_boot");
        dataSource.setUsername("root");
        dataSource.setPassword("123456");
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        return dataSource;
    }
    @Bean(name ="mysqltest")
    @Primary //默认数据源
    public DataSource Mysqltest(){
        DruidDataSource dataSource=new DruidDataSource();
        dataSource.setUrl("jdbc:mysql://localhost:3306/test");
        dataSource.setUsername("root");
        dataSource.setPassword("123456");
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        return dataSource;
    }
}

配置Secrity

  • 常见异常

    • UsernameNotFoundException(用户不存在)
    • DisabledException(用户已被禁用)
    • BadCredentialsException(坏的凭据)
    • LockedException(账户锁定)
    • AccountExpiredException (账户过期)
    • CredentialsExpiredException(证书过期)
  • Secrity配置文件

    @Configuration
    public class SecrityConfig extends WebSecurityConfigurerAdapter {
        @Autowired
        private SecurityService securityService;
        @Autowired
        private MyPasswordEncoder myPasswordEncoder;
        /*
        *注意:此处可以不用配置securityService、myPasswordEncoder只要有在Spring容器里,Secrity会自动使用
        * */
    //    @Override
    //   protected void configure(AuthenticationManagerBuilder auth) throws Exception {
    //      auth.userDetailsService(securityService).passwordEncoder(myPasswordEncoder);
     // }
    
        /*
        * 拦截器设置
        * */
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http.
                    csrf()//跨站
                    .disable();//关闭跨站检测
    
            http.authorizeRequests()验证策略策略链
                    .antMatchers("/public/**").permitAll()//无需验证的路径
                    .antMatchers("/login","/regist")//登录注册界面不需要权限
                    .permitAll()//允许通过
                    .anyRequest().authenticated()//所有请求需认证
                    .and()
                    .formLogin()
                        .loginPage("/login.html")//登录页面
    //                    .failureUrl("")//自定义失败处理
                        .permitAll();//定制登录行为,登录页面可任意访问
    //                .and()
    //                .logout()
    //                   .logoutUrl("/login.html")
    //                   .permitAll();//定制注销行为,注销请求可任意访问
    
    
    		//        允许ifram调用
          http.headers().frameOptions().sameOrigin();
    
        }
    }
    
  • MyPasswordEncoder:密码加密配置文件

    @Component
    public class MyPasswordEncoder implements PasswordEncoder {
    
        /*
        * 加密规则:此处没有加密(可以人为加密后传入)
        * */
        @Override
        public String encode(CharSequence charSequence) {
            System.out.println("encode:  "+charSequence);
            return charSequence.toString();
        }
    
        //判断密码是否匹配
        @Override
        public boolean matches(CharSequence charSequence, String s) {
            System.out.println("前端传过来的密码:"+charSequence);
            System.out.println("后台保存的密码:"+s);
            System.out.println("加密:"+this.encode(charSequence));
            return s.equals(this.encode(charSequence));
        }
    }
    
  • SecurityService文件 这里可以结合原来的DAO和SecurityUser

    @Component
    public class SecurityService implements UserDetailsService {
    
    
        @Override
        public UserDetails loadUserByUsername(String s) throws UsernameNotFoundException {
    
            /*
            * 数据库查询用户名和密码
            * */
            User user=new User();
            user.setId("12345");
            user.setName("123");
            user.setPsw("123456");
            //设置用户
            SecurityUser securityUser=new SecurityUser(user.getPsw(),user.getId());
            /*
            * 获取用户权限
            * */
            List<GrantedAuthority> authorities = new ArrayList<>();
    
    //        authorities.add(new Gr)
    //        securityUser.setAuthorities(authorities);
    
    
    
            return securityUser;
    
        }
    }
    
    
  • SecurityUser

    /**
     * @Author: Daiven
     * @Date: 2019/11/9 16:53
     * @Version 1.0
     * @描述:定义用户和角色
     * UserDetails => Spring Security基础接口,包含某个用户的账号,密码,权限,状态(是否锁定)等信息。只有getter方法。
     * Authentication => 认证对象,认证开始时创建,认证成功后存储于SecurityContext
     * principal => 用户信息对象,是一个Object,通常可转为UserDetails
     */
    public class SecurityUser implements UserDetails {
        private String password;
        private String name;
        List<GrantedAuthority> authorities;
    
        public SecurityUser(String password, String name) {
            this.password = password;
            this.name = name;
        }
    
        /*
        * 设置权限
        * */
        public void setAuthorities(List<GrantedAuthority> authorities) {
            this.authorities = authorities;
        }
        /*
        *获得权限
        * */
        @Override
        public Collection<? extends GrantedAuthority> getAuthorities() {
            return this.authorities;
        }
        /*
        * 获取密码
        * */
        @Override
        public String getPassword() {
            System.out.println("调用获得密码!");
            return name;
        }
        /*
        * 获取用户名
        * */
        @Override
        public String getUsername() {
            System.out.println("调用获得用户名!");
            return this.password;
        }
    
        /*
        * 账户是否过期
        *true:没有失效
        *false:失效
        * */
        @Override
        public boolean isAccountNonExpired() {
            return false;
        }
        /*
        * 帐户是否被冻结
        *false:被冻结
        *true:没有被冻结
        * */
        @Override
        public boolean isAccountNonLocked() {
            return false;
        }
    
        /*
        * 帐户密码是否过期,一般有的密码要求性高的系统会使用到,
        * 比较每隔一段时间就要求用户重置密码
        *false:过期
        *true:没过期
        * */
        @Override
        public boolean isCredentialsNonExpired() {
            return false;
        }
        /*
        *  帐号是否可用
        *true:可用
        *false:不可用
        * */
        @Override
        public boolean isEnabled() {
            return false;
        }
    }
    
  • 获得secrity相关数据

    • 获得权限
    @GetMapping("/index")
        public  String toIndex(Authentication authentication){
            List<GrantedAuthority> authorities= (List<GrantedAuthority>) authentication.getAuthorities();
            for (GrantedAuthority authority : authorities) {
                System.out.println(authority.getAuthority());
            }
            return "index";
        }
    

SpringBoot内置定时器

  • 启动类上添加注解

    @SpringBootApplication
    @EnableScheduling
    public class SpringbootQuartzApplication {
    }
    
  • 表达式生成地址

  • 创建定时执行的任务类(两种方式)

    • 方式一:

      @Component
      public class Sch
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值