c3p0连接池配置_spring⽂件配置和注解配置
配置⽂件介绍
bean标签解析
bean标签:指定创建的实体类
bean标签
id id属性:可以为任意值
class属性:要实例化类的全限定名
class
<
scope属性:singleton 单实例
singleton 单实例 ,如果是单实例配置⽂件⼀家在就会创建对象,放在spring容器中,以map形式存储,map id是scope属性
key,value是他的对象,默认情况下配置⽂件只要⼀加载 就创建对象 scope:singleton
prototype 多实例,如果是多实例,配置⽂件加载,不会创建对象,当每个⼈getBean时候创建对象,get⼀次创建⼀次。prototype 多实例
什么时候⽤单实例,什么时候⽤多实例:action:prototype
service/dao:singleton
single对象什么时候销毁?
答:single对象⼀般不销毁,当容器关闭。prototype的对象长时间不⽤就被jvm⾃动回收。
init-method:指定初始化时机
init-method:
destory:死指定销毁⽅法。
destory:
导⼊外部配置⽂件
<import:导⼊外部配置⽂件,resource:外部配置⽂件地址/>
bean创建的是三种⽅式
⽆参数构造⽅式
<bean id="user" class="cn.sxt.domin.User">
静态⼯⼚创建⽅式
条件:需要有个⼯⼚类,还需要有个静态⽅法,
public
<bean id="user" class="cn.sxt.untils.BeanFactory" factory-method="createUser"/>
实例⼯⼚
条件:需要有⼀个⼯⼚类,在这个⼯⼚类中还需要有⼀个普通⽅法。
public
<bean id="beanFactory" class="cn.sxt.utils.BeanFactory"></bean>
<bean id="user" factory-bean="beanFactory" factory-method="createUser">
DI属性注⼊⽅式
第⼀种⽅式:构造器⽅式注⼊
要构造的类中有构造器⽅法
<bean id="car1" class="cn.sxt.domain.Carimpl">
<!-- name要赋值的属性名 value:值(string和基本类型) ref:引⽤类型-->
<constructor-arg name="name" value="BMW"></constructor-arg>
<constructor-arg name="price" value="100"></constructor-arg>
第⼆种⽅式:set属性注⼊
class
<bean id="car" class="cn.sxt.domain.Carimpl">
<!--property :是set属性的⽅式 name:要赋值的属性名字 value:要赋的值 ref:引⽤类型,必须是bean的id-->
<property name="name" value="奇瑞QQ"></property>
</bean>
第三种⽅式:p命名空间⽅法(了解)
<!-- DI的注⼊⽅式: 1 p名称空间的⽅式 条件: 在配置⽂件中有p的名称空间 底层set⽅式 属性还是得有set⽅法 语法: <bean p:属性名="属性值" p:属性名-ref="bean的id对象值" > -->
<bean id="person" class="cn.itcast.serviceImpl.PersonImpl" p:name="rose" p:car-ref="car"></bean>
第四种复杂属性注⼊:复杂类型
<bean
以后代替properties⽂件
springAPI内容
ioc的AIP内容
ApplicationContext:接⼝
2个常⽤的实现类: ClassPathXmlApplicationContext -------> 从src下加载配置⽂件FileSystemXmlApplicationContext ------->从磁盘路径下加载配置⽂IOC注解开发
spring注解开发
spring整合连接池
spring不仅可以实例化⾃⼰写的类也可以实现第三⽅的类。例如c3p0硬编码连接池。
public
既然是创建对象并初始化,那么将这个过程交给spring管理,⽤context的名称空间和约束条件可以加载properties⽂件。
//properties⽂件
jdbc.sql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/hibernate
jdbc.username=root
jdbc.password=1234
#jdbc.sql.jdbc.Driver
#jdbc.url=jdbc:oracle://localhost:3306/hibernate
#jdbc.username=root
#jdbc.password=1234
#jdbc.sql.jdbc.Driver
#jdbc.url=jdbc:db2://localhost:3306/hibernate
#jdbc.username=root
#jdbc.password=1234
properties⽂件⽤来切换数据库,导⼊expression包就可以使⽤cgnil表达式
<!--xml装配连接池-->
!-- 让spring能够加载jdbc.properties⽂件
spring提供了⼀个标签可以加载外部的properties⽂件内容
导context的名称空间和约束才会有提⽰
-->
spring的IOC注解
spring ioc注解帮助解半xml配置⽅式
⾃⼰的类全部是注解
别⼈的类全部都是xml
1 导包 spring-aop.jar
2 配置注解扫描器
<!--xml装配连接池-->
!-- 让spring能够加载jdbc.properties⽂件
spring提供了⼀个标签可以加载外部的properties⽂件内容
导context的名称空间和约束才会有提⽰
-->
在类上⾯打注解@service("service")相当于在xml⽂件中写<bean id="service">.但是如果进⾏类初始化,就需要⽤到@value("内容") 这个注解只能给基本类型诸如。set()⽅法可以省略不写
set()⽅法可以省略不写如果是引⽤类型就是⽤@Autowired ,这个注解spring会⾃动完成类型的匹配。
@scope
@component("bean的ID") 只要注解扫描器扫描到注解就会在spring中创建对象。
新注解/完全注解配置
条件:需要有⼀个注解类,不再加载配置⽂件,⽽是加载这个注解类。
@Configuration
或者在另外⼀个⽂件创建配置类然后导进另⼀个类⾥⾯。@value()给字段注⼊值,@bean
public
spring整合junit测试
1 导包 spring-test.jar 增强 spring-aop.jar 可以写注解 junit.jar 还是之前的测试
2 要告诉spring谁加载配置⽂件(SpringJunt4ClassRunner.class)
3 要告诉spring配置⽂件的地址
4 分层测试
/*1:告诉spring配置⽂件在哪个地⽅*/
可以实现分层测试

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。