一、IOC DI
IOC: inversion of control 控制反转
主要目的:解耦合,通过一个容器来管理对象的创建和销毁,以及各个对象之间的关联关系。
DI:dependence injection 依赖注入
原先的依赖对象是由 程序员自身管理的,在控制反转后,就由IOC容易主动注入,在运行期间动态的注入。
- 解决了**对象的创建和组装的问题**
- **Spring默认通过无参构造方法实例化对象**
**------------------------------------------------------------------------------**
二、BEAN
1. maen中引入依赖坐标
2. 建立resource下的application.xml
3. 将对象创建配置
<bean id="userDao" class="com.zn.dao.UserDao"></bean>
//id为唯一标识
<bean id="userService" class="com.zn.service.UserService">
<cconstructor-arg name="userDao" ref="userDao"/>
// name属性是UserServiceImpl中的构造函数的userDao
//ref引用的是spring容器中第一个bean标签userDao的唯一标识id
<property name="userDao" ref="userDao"/>
//name是set方法的后面
其实使用set注入的时候默认是需要无参构造器的
4. 修改启动类
ClassPathXmlApplicationContext applicationContext =
new ClassPathXmlApplicationContext("spring.xml");
IUserService userService = (IUserService) applicationContext.getBean("userService");
**------------------------------------------------------------------------------**
三、注入的类型
- 普通数据类型
- list数据类型
<property name="address">
<list>
<value>四川</value>
<value>成都</value>
</list>
</property>
- map数据类型
<map>
<entry key="mon" value="lily"></entry>
<entry key="userrr" value-ref="user1"></entry>
<entry key="userr" value-ref="user2"/>
<entry key-ref="userService" value-ref="userDao"/>
</map>
- properties
<property name="properties">
<props>
<prop key="p1">aaa</prop>
<prop key="p2">bbb</prop>
<prop key="p3">ccc</prop>
</props>
</property>
**------------------------------------------------------------------------------**
四、连接池
1. 引入依赖
2. 创建一个properties
3. 在xml中配置
<context:property-placeholder location="classpath:jdbc.properties"/>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driver}"/>
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="user" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
4.从容器中获取
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");
DataSource dataSource = (DataSource) applicationContext.getBean("dataSource");
Connection connection = dataSource.getConnection();
**------------------------------------------------------------------------------**
五、代码优化
1.在管理员也米娜登录中,可以新增编辑用户名为一样的,容易造成数据错误。
初步解决:在数据库中将username设置为主键,在编辑中将username设置为不可编辑。
2.后台页面中新增了产品,在前端无展示。
初步判断是由于product页面做规定,每次只查询一页8条造成的,所以在第九条数据的时候就没有显示。
初步解决:按照新增排序,分页的问题我要再想一下。
顺便加个图