spring框架1
spring
1.两大核心思想:IOC,AOP
2.用途:
1)IOC容器可以将对象之间的依赖关系交由spring管理,进行控制
2)AOP:方便进行面向切面的编程,是oop的扩展,想加什么功能直接加
3)能够集成其他框架,struts hibernate等
3.组成
4.IOC(Inversion of Control)=DI(Dependency Injection)控制反转和依赖注入,采用反射实现,核心组件是BeanFactory,实际开发常用XmlBeanFactory
5.依赖注入的三种方式
1)set注入
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
xml:
<property name="要注入的属性名" ref="要依赖的bean 的id值"/>
2)构造注入
public UserService(UserDao userDao) {
this.userDao = userDao;
}
xml:
<constructor-arg index="0" ref="userDao"/>
3)注解注入
@Autowired(spring提供的) 把它加在需要注入的属性上, 或set方法上,或构造方法上
启用该注解
xml:
<context:annotation-config/>
@Resource (java官方的注解) 用法与@Autowired类似
6.bean在容器上的生命周期
7.使用spring容器
1)创建spring容器
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("abc/spring.xml");
2)使用容器内对象
UserDao dao =(UserDao)context.getBean("userDao");
// 根据id获取
UserDao dao = context.getBean(UserDao.class);
// 根据类型获取, 找一个类型为UserDao的对象
8.整合mybatis
步骤1:在pom.xml加入依赖
mybatis, mysql, spring-context, logback, druid, junit, spring-jdbc, mybatis-spring
步骤2:把关键对象spring控制反转
连接池对象, sqlSessionFactory, sqlSession
<context:property-placeholder location="classpath:jdbc.properties"/>
<!-- 1) 把数据源对象交给spring容器管理 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<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="${jdbc.max}"/>
<property name="minIdle" value="${jdbc.min}"/>
</bean>
<!-- 2) sqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 注入连接池 -->
<property name="dataSource" ref="aaa"/>
<!-- 注入mapper.xml文件的位置-->
<property name="mapperLocations" value="classpath:com/westos/mapper/*.xml"/>
</bean>
<!-- 3) sqlSession, 用SqlSessionTemplate得到的SqlSession可以不用我们自己操心事务的管理,以及关闭操作 -->
<bean id="sql" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory"/>
</bean>
步骤3:
使用SqlSession工厂
ClassPathXmlApplicationContext context =
new ClassPathXmlApplicationContext("abc/spring-mybatis.xml");
SqlSession sqlSession = context.getBean(SqlSession.class);
Map<String, Object> map = new HashMap<String,Object>();
map.put("m", "0");
map.put("n", 5);
List<Product> list = sqlSession.selectList("com.westos.mapper.ProductMapper.selectByPage", map);
for (Product product : list) {
System.out.println(product);
}