SSH相关-基础知识

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSH相关-基础知识相关的知识,希望对你有一定的参考价值。

Spring相关


@Autowired   

默认按类型匹配   byType 成员变量、set方法、构造方法  

bean应当有且只有一个,没有报错 【没有或者多个都会报错BeanCreationException异常】   

@Autowired(required = false)  

即便bean不存在,也不报错,少用


@Qualifier 

注释指定注入 Bean 的名称 ,配合@Autowired 一起使用   byName  有益补充



JSR定义的注解需要生效的话:

<bean class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor"/>


@Resource 

默认按名称匹配  name type 2个属性 使用哪个就按照哪个进行注入  

【本质上和@Autowired功能一样】


@PostConstruct@PreDestroy   

实现 InitializingBean/DisposableBean 接口来定制初始化之后 / 销毁之前的操作方法  

<bean> 元素的 init-method/destroy-method 属性

这些方法就会在 Bean 初始化后或销毁之前被 Spring 容器执行

打在方法上,可以在多个方法上进行注解


上面的就是说,在XML配置下BEAN的定义,然后通过@注解的方式进行注入


那么能否把在XML中定义BEAN的配置也通过注解的方式进行呢?使用@Component注解达到目的。


@Component、@Service【业务层】、@Constroller【控制层】,它们分别用于软件系统的不同层次

@Repository 只能标注在 DAO 类上呢?这是因为该注解的作用不只是将类识别为 Bean,同时它还能将所标注的类中抛出的数据访问异常封装为 Spring 的数据访问异常类型

以上注解定义时可以指定BEAN的名称


通过在类上使用 @Repository、@Component、@Service 和 @Constroller 注解,Spring 会自动创建相应的 BeanDefinition 对象,并注册到 ApplicationContext 中。这些类就成了 Spring 受管组件。这三个注解除了作用于不同软件层次的类,其使用方式与 @Repository 是完全相同的。


在使用 @Component 注释后,Spring 容器必须启用类扫描机制以启用注释驱动 Bean 定义和注释驱动 Bean 自动注入的策略。

<context:component-scan base-package="X.Y.Z"/>   类包及其递归子包中所有的类都会被处理


Scope:

默认情况下通过 @Component 定义的 Bean 都是 singleton 的,如果需要使用其它作用范围的 Bean,可以通过@Scope 注释来达到目标


prototype 从 Spring 容器中获取 boss Bean 时,每次返回的都是新的实例

singleton 单例



在实现应用中,我们往往需要同时使用注释配置和 XML 配置,对于类级别且不会发生变动的配置可以优先考虑注释配置;而对于那些第三方类以及容易发生调整的配置则应优先考虑使用 XML 配置。Spring 会在具体实施 Bean 创建和 Bean 注入之前将这两种配置方式的元信息融合在一起。


@Lazy(true) 表示延迟初始化


SPRING事务相关

主要是存在于方法上: @Transactional(readOnly = true, propagation = Propagation.SUPPORTS)


REQUIRED(默认值):在有transaction状态下执行;如当前没有transaction,则创建新transaction;


SUPPORTS:如当前有transaction,则在transaction状态下执行;如果当前没有transaction,在无transaction状态下执行;


REQUIRES_NEW:创建新的transaction并执行;如果当前已有transaction,则将当前transaction挂起;


其实主要考虑的是这样的情况:

A 调用 B

如果A B处于同一个事务当中,那么需要保证如果B失败了,那么A也应该失败,否则就会不一致了

如果A处于一个事务S1当中,B处于另一个事务S2当中,那么如果B成功失败与否都不会影响A的执行的


readOnly=true:会告诉底层数据源,这个是一个只读事务,对于JDBC而言,只读事务会有一定的速度优化

-----------------------------------------------------


Struts相关


Action注解

@Namespace("/api/internal/vod-coupon")   注意是以/开头,还是不是以/开头的   命名空间

@ParentPackage("basePackage")  //指定父包

@Action("userAction")  //指定action的访问url    实际中一般打在方法上,实现一个ACTION中的多个方法响应多个URL


与Spring如何结合的:

struts拦截器:

    <filter>
        <filter-name>struts2Filter</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>

   

<filter-mapping>
        <filter-name>struts2Filter</filter-name>
        <url-pattern>*.action</url-pattern>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
    </filter-mapping>

Spring监听器:

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
       
    </listener>

Spring配置文件加载路径:

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath*:applicationContext*.xml</param-value>
    </context-param>

参考博客:

http://blog.csdn.net/wk313753744/article/details/19920195

http://www.2cto.com/kf/201503/383399.html


-----------------------------------------------------




本文出自 “学海无涯 心境无限” 博客,请务必保留此出处http://zhangfengzhe.blog.51cto.com/8855103/1850778

以上是关于SSH相关-基础知识的主要内容,如果未能解决你的问题,请参考以下文章

ssh服务及scp命令相关知识

《Linux菜鸟入门》进程以及ssh的相关知识

github 相关操作知识

AJAX相关JS代码片段和部分浏览器模型

android小知识点代码片段

[vscode]--HTML代码片段(基础版,reactvuejquery)