IOC DI

文章详细介绍了Spring框架中的IOC(控制反转)和DI(依赖注入)概念,通过Bean的配置展示了如何管理对象的生命周期和依赖关系。此外,还涵盖了不同类型的注入方式,如普通数据类型、列表、Map和属性的注入。最后,文章提到了使用连接池配置数据源的基本步骤,并提出了针对代码优化的建议。
摘要由CSDN通过智能技术生成

 一、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条造成的,所以在第九条数据的时候就没有显示。

初步解决:按照新增排序,分页的问题我要再想一下。

顺便加个图

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值