Spring学习2--IOC应用
来源:互联网 发布:廖雪峰 java教程 网盘 编辑:程序博客网 时间:2024/06/15 14:39
Spring容器使用了依赖注入DI的方式实现了IOC控制
Setter注入方式
示例如下:
JDBCDataSource类封装了链接数据库的方法和一些必要参数,现在要通过setter注入方式把这些参数传入JDBCDataSource类中。
package com.test.dao;import java.io.Serializable;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class JDBCDataSource implements Serializable{ private String driver; private String url; private String user; private String pwd; public String getDriver() { return driver; } public void setDriver(String driver) { try { //注册数据库驱动 Class.forName(driver); this.driver = driver; } catch (ClassNotFoundException e) { e.printStackTrace(); } } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getUser() { return user; } public void setUser(String user) { this.user = user; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } public Connection getConnection() throws SQLException{ Connection conn = DriverManager.getConnection(url, user, pwd); return conn; } public void close(Connection conn){ if(conn != null){ try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } }}
applicationContext.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:context="http://www.springframework.org/schema/context" xmlns:util="http://www.springframework.org/schema/util" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jpa="http://www.springframework.org/schema/data/jpa" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd"> <!-- setter注入 --> <bean id="dataSource" class="com.test.dao.JDBCDataSource"> <property name="driver" value="com.mysql.jdbc.Driver"></property> <property name="url" value="jdbc:mysql://localhost/test?characterEncoding=UTF8&zeroDateTimeBehavior=convertToNull"></property> <property name="user" value="root"></property> <property name="pwd" value="123"></property> </bean></beans>
这样,就可以通过spring的setter注入方式将参数传入该类中了。
构造器注入方式
示例:
MysqlUserDao类中的findByName方法,从数据库中查找对象,需要依赖于JDBCDataSource的属性,利用JDBCDataSource 获得数据库的连接,进行查询。
import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import com.test.entity.User;public class MysqlUserDao implements UserDao{ private JDBCDataSource dataSource; //创建JDBCDataSource对象必须依赖于JDBCDataSource实例,进行构造器注入! public MysqlUserDao(JDBCDataSource dataSource){ this.dataSource = dataSource; } public User findByName(String name) { System.out.println("利用JDBC技术查找信息"); String sql = "select * from Users where name=?"; Connection conn = null; try { conn = dataSource.getConnection(); PreparedStatement ps = conn.prepareStatement(sql); ps.setString(1, name); ResultSet rs = ps.executeQuery(); User user = null; while(rs.next()){ user = new User(); user.setId(rs.getInt("id")); user.setName(rs.getString("name")); user.setPwd(rs.getString("pwd")); user.setPhone(rs.getString("phone")); } rs.close(); ps.close(); return user; } catch (SQLException e) { e.printStackTrace(); }finally{ dataSource.close(conn); } return null; }}
applicationContext.xml的文件中添加配置如下:
<!-- setter注入 --> <bean id="dataSource" class="com.test.dao.JDBCDataSource"> <property name="driver" value="com.mysql.jdbc.Driver"></property> <property name="url" value="jdbc:mysql://localhost/test?characterEncoding=UTF8&zeroDateTimeBehavior=convertToNull"></property> <property name="user" value="root"></property> <property name="pwd" value="123"></property> </bean> <!-- 构造器注入 --> <bean id="userDao" class="com.test.dao.MysqlUserDao"> <!-- 利用构造器的参数注入bean的属性 --> <constructor-arg index="0" ref="dataSource"></constructor-arg> </bean>
以上配置完成了dataSource的构造器注入。
0 0
- Spring学习2--IOC应用
- 【Spring应用级学习】从Ioc开始
- spring-ioc 学习笔记2
- Spring-IOC-学习笔记(2)
- Spring学习笔记2-IOC
- Spring学习笔记(一)----Spring IOC配置与应用
- Spring学习(四)Spring容器的IOC应用
- spring实例应用(IoC)
- Spring---IOC应用
- Spring初识、IOC应用
- spring IoC学习 ------IoC基本概念
- spring 学习笔记(2)--IOC(DI)
- Spring源码学习IOC(2):XmlBeanFactory导读
- Spring学习笔记---2-IOC详解
- spring学习之IOC容器2
- Spring IoC学习笔记
- Spring学习-------IOC
- Spring Ioc学习(一)
- 阶乘尾数零的个数
- Pixhawk---固件编译由make编译系统转到cmake编译系统解决方法,快来看
- Tomcat目录下的各个文件夹的作用
- Oracle两种分页小记
- 元数据管理器中存在错误。 日志文件的扩展名只能是 .LOG。
- Spring学习2--IOC应用
- 数据结构和算法系列 - 八大排序算法
- myeclipse和intellij安装并使用git
- 关于java里的instanceof运算符(总结于疯狂JAVA讲义)
- php无限分类
- map遍历
- lua字符串分割
- 单调递增最长子序列
- 景点接口 查询携程旅游门票景点详情