Spring in Action中文版总结

1strutsactionspringcontroller的区别

答:action是通过getter setter方法去注入数据的,而controller是通过@注解去实现的。Struts2中的action默认是多例的。springcontroller性能更快。Action每次都要重新new一个

2extendsimplements的不同

1、在类的声明中,通过关键字extends来创建一个类的子类。

一个类通过关键字implements声明自己使用一个或者多个接口。

extends 是继承某个类, 继承之后可以使用父类的方法, 也可以重写父类的方法;

implements 是实现多个接口, 接口的方法一般为空的, 必须重写才能使用

2extends是继承父类,只要那个类不是声明为final或者那个类定义为abstract的就能继承

JAVA中不支持多重继承,但是可以用接口 来实现,这样就要用到implements,继承只能继承一个类,

implements可以实现多个接口,用逗号分开就行了 比如 :

class A extends B implements C,D,E

接口实现的注意点:  

a.实现一个接口就是要实现该接口的所有的方法(抽象类除外)

b.接口中的方法都是抽象的。  

c.多个无关的类可以实现同一个接口,一个类可以实现多个无关的接口。

3、pojo(简单java对象) VO(value object):用于前端展示使用(例如放置到JSP中解析或者给前端传递数据)

PO(persistence object):用于持久化时(例如保存到数据库或者缓存);

DTO(data transfer object):用于接口互相调用返回,数据传输(例如很多接口调用返回值或  消息队列内容);

4、BeanFactory延迟载入:getBean()方法被调用时Bean才被创建           ApplicationContext(应用上下文)是预载入

5、Bean的生命周期

6、将一个类的引用赋给另外一个类,可以通过构造函数(在创建该类时就引用)或者set的方法(需要使用时才会被引用)

7、singletion=”false”定义为原型模式,缺省是true

8、Xml property 的子元素<ref>设置指向其他Bean的属性

9、Autowire自动装配属性,有四种:byName byType constructor autodetect

10、PropertyPlaceholderConfigurer可以从外部装在一些配置信息

例如:<context:property-placeholder location="classpath:dbconfig.properties" />

11、切面:要实现的交叉功能,最简单的例子是日志记录

连接点:是应用程序执行过程中插入切面的地点。

通知:通知切面的实际实现。通知包含了实现实际日志功能的代码,如向日志文件写日志。

切入点:通知应该应用在那些连接点。通常通过类名和方法名,或者通过通配符

12、ProxyFactoryBean类被BeanFactoryApplicationContext用于创建代理。属性:target属性定义哪个Bean作为代理对象的目标对象。即要被通知的对象。proxyInterfaces属性指代理应该实现的接口列表。interceptorNames属性指需要应用到目标对象上的通知Bean的名字。可以使拦截器、Advisor或其他通知类型的名字。这个属性必须按照BeanFactory中使用的顺序设置。

13、自动代理:BeanNameAutoProxyCreatorDefaultAdvisorAutoProxyCreator

14、元数据自动代理:声明式事务管理

15、Spring 整合hibernate

<!-- 数据源集合 -->
<bean id="dataSource"
   class="org.jeecgframework.core.extend.datasource.DynamicDataSource">
   <property name="targetDataSources">
      <map key-type="org.jeecgframework.core.extend.datasource.DataSourceType">
         <entry key="dataSource_jeecg" value-ref="dataSource_jeecg" />
         <!-- <entry key="mapdataSource" value-ref="mapdataSource" /> -->
      </map>
   </property>
   <property name="defaultTargetDataSource" ref="dataSource_jeecg" />
</bean>
<bean id="sessionFactory"
   class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
   <property name="dataSource" ref="dataSource" />
   <property name="entityInterceptor" ref="hiberAspect" />
   <property name="hibernateProperties">
      <props>
         <!--<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop> -->
         <prop key="hibernate.dialect">${hibernate.dialect}</prop>
         <prop key="hibernate.show_sql">false</prop>
         <prop key="hibernate.format_sql">true</prop>
         <prop key="hibernate.temp.use_jdbc_metadata_defaults">false</prop>
      </props>
   </property>
   <!-- 注解方式配置 -->
   <property name="packagesToScan">
      <list>
         <value>org.jeecgframework.web.system.pojo.*</value>
         <value>org.jeecgframework.web.cgform.entity.*</value>
         <value>org.jeecgframework.web.cgreport.entity.*</value>
         <value>org.jeecgframework.web.cgdynamgraph.entity.*</value>
         <value>org.jeecgframework.web.graphreport.entity.*</value>
         <value>org.jeecgframework.web.system.sms.*</value>
         <value>cn.com.datalk.cloud.*.entity</value>
         <value>com.jeecg.*</value>
      </list>
   </property>
</bean>


<!-- JDBC配置 -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
   <property name="dataSource">
      <ref bean="dataSource" />
   </property>
</bean>

<!-- JDBC配置 -->
<bean id="namedParameterJdbcTemplate"
   class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
   <constructor-arg ref="dataSource" />
</bean>

 

16、事物:ACID原子性,一致性,隔离性,持久性

<!-- 配置事物管理器,在*ServiceImpl里写@Transactional就可以启用事物管理 -->
<bean name="transactionManager"
   class="org.springframework.orm.hibernate4.HibernateTransactionManager">
   <property name="sessionFactory" ref="sessionFactory"></property>
</bean>

17、远程技术:远程方法调用(RMI

              CauchoHessianBurlap

              Spring自己的HTTP invoker

              企业JavaBeanEJB

              Web Services

18、springMVC的请求过程,浏览器发送请求---->前端控制器dispatcherServlet接受请求---->查询HandlerMapping(主要是将url映射到一个控制器对象)---->控制器(Controller)处理请求(一般是通过service层处理业务逻辑)---->返回一个ModelAndViewdispatcherServlet---->dispatcherServlet通过返回的视图对象逻辑名用ViewResolver来查找用于渲染回应的视图对象---->dispatcherServlet将视图对象负责渲染返回给客户

<servlet>

 <servlet-name>training<servlet-name>

 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

 <load-on-startup>1</oad-on-startup>

</servlet>

dispatcherServlet载入后,它将从XML文件中载入spring的应用上下文,xml文件名字取决于servlet-name

指定哪些url需要由dispatcherServlet来处理

<servlet-mapping>

 <servlet-name>training<servlet-name>

 <url-pattern>*.jsp</url-pattern>/**.do也可以什么url形式都行*/

</servlet-mapping>

19、配置上下文载入器

<listener>
   <description>spring监听器</description>
   <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

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

参数可以用,隔开,相对Web系统的根路径(/....;

20prefix前缀,suffix后缀,中间是视图逻辑名。其中p:order是解析器之间的优先级

<!-- 默认的视图解析器 在上边的解析错误时使用 (默认使用html)- -->
<bean id="defaultViewResolver"
   class="org.springframework.web.servlet.view.InternalResourceViewResolver"
   p:order="3">
   <property name="viewClass"
      value="org.springframework.web.servlet.view.JstlView" />
   <property name="contentType" value="text/html" />
   <property name="prefix" value="/webpage/" />
   <property name="suffix" value=".jsp" />
</bean>

 

beanNameViewResolver是一个将逻辑视图名与应用上下文中的Bean匹配的视图解析器

<!-- Bean解析器,级别高于默认解析器,寻找bean对象进行二次处理 -->
<bean id="beanNameViewResolver"
      class="org.springframework.web.servlet.view.BeanNameViewResolver" p:order="0"
</bean>

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目录 第一部分spring的核心 第1章开始spring之旅 1.1spring是什么 1.2开始spring之旅 1.3理解依赖注入 1.3.1依赖注入 1.3.2di应用 1.3.3企业级应用中的依赖注入 1.4应用aop 1.4.1aop介绍 1.4.2aop使用 1.5小结 第2章基本bean装配 2.1容纳你的bean 2.1.1beanfactory介绍 2.1.2使用应用上下文 2.1.3bean的生命 2.2创建bean 2.2.1声明一个简单的bean 2.2.2通过构造函数注入 2.3注入bean属性 2.3.1注入简单的数值 2.3.2使用其他的bean 2.3.3装配集合 2.3.4装配空值 2.4自动装配 2.4.1四种自动装配类型 2.4.2混合使用自动和手动装配 2.4.3何时采用自动装配 2.5控制bean创建 2.5.1bean范围化 2.5.2利用工厂方法来创建bean 2.5.3初始化和销毁bean 2.6小结 第3章高级bean装配 3.1声明父bean和子bean 3.1.1抽象基bean类型 3.1.2抽象共同属性 3.2方法注入 3.2.1基本的方法替换 3.2.2获取器注入 3.3注入非springbean 3.4注册自定义属性编辑器 3.5使用spring的特殊bean 3.5.1后处理bean 3.5.2bean工厂的后处理 3.5.3配置属性的外在化 3.5.4提取文本消息 3.5.5程序事件的解耦 3.5.6让bean了解容器 3.6脚本化的bean 3.6.1给椰子上lime 3.6.2脚本化bean 3.6.3注入脚本化bean的属性 3.6.4刷新脚本化bean 3.6.5编写内嵌的脚本化bean 3.7小结 第4章通知bean 4.1aop简介 4.1.1定义aop术语 4.1.2spring对aop的支持 4.2创建典型的spring切面 4.2.1创建通知 4.2.2定义切点和通知者 4.2.3使用proxyfactorybean 4.3自动代理 4.3.1为spring切面创建自动代理 4.3.2自动代理@aspectj切面 4.4定义纯粹的pojo切面 4.5注入aspectj切面 4.6小结 第二部分企业spring 第5章使用数据库 5.1spring的数据访问哲学 5.1.1了解spring数据访问的异常体系 5.1.2数据访问的模板化 5.1.3使用dao支持类 5.2配置数据源 5.2.1使用jndi数据源 5.2.2使用数据源连接池 5.2.3基于jdbc驱动的数据源 5.3在spring里使用jdbc 5.3.1处理失控的jdbc代码 5.3.2使用jdbc模板 5.3.3使用spring对jdbc的dao支持类 5.4在spring里集成hibernate 5.4.1选择hibernate的版本 5.4.2使用hibernate模板 5.4.3建立基于hibernate的dao 5.4.4使用hibernate3上下文会话 5.5springjava持久api 5.5.1使用jpa模板 5.5.2创建一个实体管理器工厂 5.5.3建立使用jpa的dao 5.6spring和ibatis 5.6.1配置ibatis客户模板 5.6.2建立基于ibatis的dao 5.7缓存 5.7.1配置缓存方案 5.7.2缓存的代理bean 5.7.3注解驱动的缓存 5.8小结 第6章事务管理 6.1理解事务 6.1.1仅用4个词解释事务 6.1.2理解spring对事务管理的支持 6.2选择事务管理器 6.2.1jdbc事务 6.2.2hibernate事务 6.2.3jpa事务 6.2.4jdo事务 6.2.5jta事务 6.3在spring中编写事务 6.4声明式事务 6.4.1定义事务参数 6.4.2代理事务 6.4.3在spring2.0里声明事务 6.4.4定义注释驱动事务 6.5小结 第7章保护spring 7.1springsecurity介绍 7.2验证用户身份 7.2.1配置providermanager 7.2.2根据数据库验证身份 7.2.3根据ldap仓库进行身份验证 7.3控制访问 7.3.1访问决策投票 7.3.2决定如何投票 7.3.3处理投票弃权 7.4保护web应用程序 7.4.1代理springsecurity的过滤器 7.4.2处理安全上下文 7.4.3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值