SSH框架(spring)

来源:互联网 发布:mysql系统当前时间 编辑:程序博客网 时间:2024/05/22 15:52
一.什么是spring
1 spring是轻量级开源框架
2 spring是一站式框架
(1)针对javaee三层结构
    Web层: springMVC
    Service层:spring的ioc
    Dao层:spring的jdbcTemplate
3 spring核心有两部分:
(1)ioc:
       - 控制反转:
- 之前操作,有一个类,调用类里面的方法(不是静态方法),创建类对象,使用对象调用的方法实现
       - 在spring把创建对象过程,不在代码里面实现,而是交给spring进行配置实现
 底层原理;xml配置文件+dom4j+工厂设计模式+反射
(2)aop:
- 面向切面:
- 扩展功能,不修改源代码,通过配置方式实现,增强类
二.spring入门
   *web.xml:
<!-- 指定找到spring配置文件位置和名称 -->
  <context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>classpath:bean1.xml</param-value>
  </context-param>
<!-- 配置spring的监听器在服务器启动时候,加载spring配置文件-->
      <listener>
      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
//applicationContext.xml核心配置文件,名字有讲究默认找到/web-inf/applicationContext.xml下的配置文件


   *spring.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p="http://www.springframework.org/schema/p"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

<!-- 加载配置文件 -->
<context:property-placeholder location="classpath:db.properties" />
<!-- 1,配置c3p0的连接池: -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<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="maxActive" value="10" />
<property name="maxIdle" value="5" />
</bean>
<!-- 2,与Struts2进行整合: -->
<!-- 创建action多实例对象 Struts2.xml文件的class属性里面写bean标签的id -->
<bean id="userAction" class="cn.itcast.action.UserAction" scope="prototype">//多列
<!-- 注入UserService对象属性 -->
<property name="userService" ref="userService"></property>
</bean>
<!-- 3,与Hibernate进行整合: -->
<!-- 配置SessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<!-- (1),注入数据源: 即指定数据库-->
<property name="dataSource" ref="dataSource"></property>
<!-- (2),注入该类中的属性configLocations: 即指定加载的文件名称 -->
<!-- private Resource[] configLocations; -->
<property name="configLocations" value="classpath:hibernate.cfg.xml"></property>
</bean>
<!-- 4,各层的对象创建与注入 -->
<!-- (1),创建UserService对象 -->
<bean id="userService" class="cn.itcast.service.UserService">
<!-- 注入UserDao对象属性 -->
<property name="userDao" ref="userDao"></property>
</bean>
<!-- (2),创建UserDao对象 -->
<bean id="userDao" class="cn.itcast.dao.UserDao">
<!-- 
注入HibernateTemplate对象属性
<property name="hibernateTemplate" ref="hibernateTemplate"></property>
-->
<!-- 那这里直接注入: SessionFactory对象属性 -->
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!-- 5,HibernateTemplate对象创建与注入 -->
<!-- (3)1,创建HibernateTemplate模板对象 -->
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate5.HibernateTemplate">
注入SessionFactory对象属性
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
  <!-- 6,事务管理器HibernateTransactionManager -->
  <!-- (1),创建事务管理器对象 -->
  <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
  <!-- 注入管理事务的数据源: 即指定数据库 ;但这里我们建议注入: SessionFactory-->
  <property name="sessionFactory" ref="sessionFactory"></property>
  </bean>
  <!-- (2),开启事务的注解 -->
  <tx:annotation-driven transaction-manager="transactionManager"/>
  <!-- (3),在所在事务的类的上面添加注解 -->
</beans>

   *service层Java代码:
@Transactional//事务管理标签
public class UserService {
//1 让dao作为属性
private UserDao userDao;
//2 生成dao属性的set方法注入
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
}


三.如何用注解方式注入和创对象
要在spring.xml里面配置
<!-- 开启注解扫描 -->
<context:component-scan base-package="cn.itcast"></context:component-scan>


java类
@Service(value="user")   // 创对象
@Scope(value="prototype")//设置单列或者多列
public class UserDao {
  public void add() {
System.out.println("add..........");
  }
}

@Resource(name="user")//把上面类的对象注入到这个属性里面
private UserDao user;
/*第二种
@@Autowired
private UserDao user;
*/
1 0
原创粉丝点击