Java成神之路(二十八)SpingMVC,Spring Boot

SpringMVC

  1. MVC
    模型-视图-控制器分离。C主要用来同步M和V;所以本意:Model为数据库记录,持久化。View:为前端,Controller:处理输入输出。
  2. SpringMVC 与Struts2
    区别:
    拦截机制不同:struts2为类级别拦截,每次请求都会创建一个Action,和Spring整合时,通过Setter,Getter把request数据注入属性,一个Action对应一个request.response上下文,在接受参数时,允许使用共享的属性接受。有自己的拦截机制,配置文件多
    SpringMVC为方法级拦截,一个方法对应一个request上下文,方法独立,独享数据。参数传递传入方法,方法独有,处理结构通过MadeMap返回给框架,和Spring整合时,为单例模型,默认所有的请求只会创建一个控制器,线程安全。
    底层实现不同:struts2使用Filter实现,在容器启动时开始初始化,晚于Servlet,服务停止后销毁。SpringMVC使用Servlet,在调用时初始化。
  3. 拦截起与过滤器
    拦截器是基于java的反射机制的,而过滤器是基于函数回调。
    拦截器不依赖与servlet容器,过滤器依赖与servlet容器。
    拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。
    拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。
    在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次
    五:Spring Boot
  4. 起步依赖,自动配置
    起步依赖本质为一个Maven项目对象模型定义对其他库的传递依赖。
    自动配置:启动时,自动检测Classpath里的BeanL来进行配置。通过配置类里使用@EnableAutoConfiguration或者@SpringBootAoolication注解,开启自动扫描和配置
  5. Spring boot的starter机制
    引入依赖,自动引入开发相关包,配置数据源。通过注解自动创建所有的bean
    @ConditionalOnBean,仅在当前上下文中存在某个bean时,才会实例化这个Bean。
    @ConditionalOnClass,某个class位于类路径上,才会实例化这个Bean。
    @ConditionalOnExpression,当表达式为true的时候,才会实例化这个Bean。
    @ConditionalOnMissingBean,仅在当前上下文中不存在某个bean时,才会实例化这个Bean。
    @ConditionalOnMissingClass,某个class在类路径上不存在的时候,才会实例化这个Bean。
    @ConditionalOnNotWebApplication,不是web应用时才会实例化这个Bean。
    @AutoConfigureAfter,在某个bean完成自动配置后实例化这个bean。
    @AutoConfigureBefore,在某个bean完成自动配置前实例化这个bean。
  6. 编写自己的strater
    第一步,SpringBoot 在启动时会去依赖的starter包中寻找 resources/META-INF/spring.factories 文件,然后根据文件中配置的Jar包去扫描项目所依赖的Jar包,这类似于 Java 的 SPI 机制。
    第二步,根据 spring.factories配置加载AutoConfigure类。
    最后,根据 @Conditional注解的条件,进行自动配置并将Bean注入Spring Context 上下文当中。
    我们也可以使用@ImportAutoConfiguration({MyServiceAutoConfiguration.class}) 指定自动配置哪些类。
    步骤:
    编写Servies类
    编写配置类,使用@ConfigurationProperties注解,扫描Servies类包。进行bean配置。
    编写自动配置类AutoConfigure,使用@configuration,@conditionOnCalss()(当Classpath下发现该类自动配置)@EnableConfigurationProperties()(类似上面那个)。
    在Spring factoriesw文件中注册,并发布。
    org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.example.autocinfigure.StarterAutoConfigure
    代码如下:
    Servies类:
public class StarterService {
    private String config;

    public StarterService(String config) {
        this.config = config;
    }
    
    public String[] split(String separatorChar) {
        return StringUtils.split(this.config, separatorChar);
    }
    
}

配置文件读取类

@ConfigurationProperties("example.service")
public class StarterServiceProperties {
    private String config;
    
    public void setConfig(String config) {
        this.config = config;
    }
    
    public String getConfig() {
        return config;
    }
 }

AytoConfigure:自动配置类:

@Configuration
@ConditionalOnClass(StarterService.class)
@EnableConfigurationProperties(StarterServiceProperties.class)
public class StarterAutoConfigure {

    @Autowired
    private StarterServiceProperties properties;

    @Bean
    @ConditionalOnMissingBean
    @ConditionalOnProperty(prefix = "example.service", value = "enabled", havingValue = "true")
    StarterService starterService (){
        return new StarterService(properties.getConfig());
    }

}

内容概要:本书《Deep Reinforcement Learning with Guaranteed Performance》探讨了基于李雅普诺夫方法的深度强化学习及其在非线性系统最优控制中的应用。书中提出了一种近似最优自适应控制方法,结合泰勒展开、神经网络、估计器设计及滑模控制思想,解决了不同场景下的跟踪控制问题。该方法不仅保证了性能指标的渐近收敛,还确保了跟踪误差的渐近收敛至零。此外,书中还涉及了执行器饱和、冗余解析等问题,并提出了新的冗余解析方法,验证了所提方法的有效性和优越性。 适合人群:研究生及以上学历的研究人员,特别是从事自适应/最优控制、机器人学和动态神经网络领域的学术界和工业界研究人员。 使用场景及目标:①研究非线性系统的最优控制问题,特别是在存在输入约束和系统动力学的情况下;②解决带有参数不确定性的线性和非线性系统的跟踪控制问题;③探索基于李雅普诺夫方法的深度强化学习在非线性系统控制中的应用;④设计和验证针对冗余机械臂的新型冗余解析方法。 其他说明:本书分为七章,每章内容相对独立,便于读者理解。书中不仅提供了理论分析,还通过实际应用(如欠驱动船舶、冗余机械臂)验证了所提方法的有效性。此外,作者鼓励读者通过仿真和实验进一步验证书中提出的理论和技术。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值