1. 程式人生 > >spring框架1

spring框架1

spring

1.兩大核心思想:IOC,AOP

2.用途:

1)IOC容器可以將物件之間的依賴關係交由spring管理,進行控制
2)AOP:方便進行面向切面的程式設計,是oop的擴充套件,想加什麼功能直接加
3)能夠整合其他框架,struts hibernate等

3.組成 spring框架組成

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在容器上的生命週期 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);
}