spring概述
- spring是一个容器框架,创建bean,维护bean之间的关系
- spring可以管理web层,持久层,业务层,dao层,spring可以配置各个层的组件,并且维护各个层的关系
spring整合struts2之配置
web.xml配置
1. 除了在文件中配置使用struts2的过滤器外,还需要配置一个spring框架提供的一个监听器
2. 同时配置一个applicationConte.xml文件路径,可以供给spring框架扫描到关于spring配置的相关信息
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
applicationContext.xml配置
1. 在src根路径下创建一个applicationContext.xml文件,在该文件中配置struts2的相关信息
2. 配置bean,配置属性id(bean的名字),class(bean类路径)
3. 如果bean有依赖的属性,那么还要配置property属性
<bean id="adminDao" class="com.bwf.book.dao.impl.AdminDaoImpl">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
说明:adminDao就是要存入容器的bean,class是实现类,sessionFacatory是其依赖的属性,其他的层也是如此配置格式
struts.xml(或者是包含文件中)配置
在struts相关的xml文件中将class的实现类路径修改为applicationContext.xml文件中对应的bean的id名,其余配置不变
spring整合struts2之注解
applicationContext.xml配置
1. 不用在文件中配置要经常调用的controller层、service层、dao层的bean属性
2. 直接在文件中声明配置,将指定的包路径下的组件类扫描并实例化存放到spring容器中
<!-- 在basePackage指定的包及后代包中扫描所有的组件类,将其实例化,放入整个容器中 -->
<!-- 组件类(在类的声明上,使用了@Component注解的类、@Controller、@Service、@Repository) -->
<context:component-scan base-package="指定的包路径" />
说明:该标签的使用需要导入相应的约束
3. 配置后,在实际需要存入容器的类上添加注解:
@Controller表示控制器
@Scope(“prototype”)表示每次访问的时候都会创建一个处理器
@Service表示业务逻辑处理器(只需要创建一个)
@Repository表示持久层处理器(只需要创建一个)
除此之外的可以使用
@Component表示所有的bean都可以放入容器中(只需要创建一个,可用在sessionFactory)
对于bean所依赖的属性,可以在属性声明上加注解:@Autowired自动完成装配,struts.xml配置不用改变
spring整合hibernate
applicationContext.xml配置
在文件中需要配置数据源、sessionFactory会话工厂
1. 数据源配置:
用alibaba的数据源(相应的包导入,百度),也可以用c3p0数据源,百度即可
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<property name="driverClassName" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="initialSize" value="8" />
</bean>
说明:${jdbc.driver}表示占位符,可以在src根目录小创建一个properties文件,键名就是占位符对应的名字,然后在这个xml文件中配置一个读取的路径:
<!-- 扫描指定的properties文件,将属性信息加载到内存中 然后再将${}替换掉-->
<context:property-placeholder location="classpath:jdbc.properties" />
对于数据源还可以配置连接池的其他属性,不再赘述
2. 会话工厂配置:
<!-- 配置spring整合hibernate会话工厂实现类 -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="packagesToScan">
<list>
<value>com.bwf.book.entity</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
</props>
</property>
</bean>
说明:该会话工厂依赖于上面的数据源dataSource,需要配置实体类的包路径,由此来说明哪些是需要持久化的实体;另外,需要配置好hibernate的属性,即方言、sql语句的格式和显示