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

扫描二维码关注公众号,回复: 1591855 查看本文章

接口实现的注意点:  

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>

 

猜你喜欢

转载自blog.csdn.net/u011213317/article/details/79686430
今日推荐