第八章-spring框架配置扩展
分类: Java ssm 专栏: ssm框架课 标签: spring配置
2022-12-19 09:46:35 1162浏览
1. 配置数据源
1.1使用properties文件配置数据源
jdbc.driverClassName=com.mysql.cj.jdbc.Driver jdbc.url=jdbc:mysql://127.0.0.1:3306/cvs_db?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC&zeroDateTimeBehavior=convertToNull jdbc.username=root jdbc.password=123456
<bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
<property name="location">
<value>classpath:database.properties</value>
</property>
</bean>
<!--配置数据源-->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
注意:这里的jdbc.username不能写成username会报错误——密码错误,应该是MySQL内部自定义了username,所以这里换个名字——jdbc.username 总之不能直接写username。
context标签加载的方式写法:
<context:property-placeholder location="classpath:database.properties"/>
1.2使用JNDI配置数据源
- 在Tomcat的安装目录下的conf文件夹里的context.xml添加resource配置
<Context> <Resource name="jdbc/cvs_db" type="javax.sql.DataSource" driverClassName="com.mysql.cj.jdbc.Driver" username="root" password="123456" url="jdbc:mysql://127.0.0.1:3306/cvs_db?characterEncoding=utf8&serverTimezone=Asia/Shanghai" > </Resource> </Context>
- 修改spring配置文件
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:comp/env/jdbc/cvs_db</value>
</property>
</bean>2.拆分spring配置文件
可以按模块拆分也可以按功能拆分,以分模块拆分为例:

- 拆分后用import整合到一个总的applicationContex
<import resource="classpath:applicationContext-dao.xml"/> <import resource="classpath:applicationContext-service.xml"/>
- 也可以在使用的时候通配的方式

- 多个参数的方式
ApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext-dao.xml","classpath:applicationContext-service.xml")- 数组的方式
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({"classpath:applicationContext-dao.xml","classpath:applicationContext-service.xml"})3.bean的自动装配
- 局部配置
autowire="byName"
也可以用autowire="byType"
也可以用autowire=“constructor”

这里需要注意一下,service依赖的dao层的那个set方法不能删掉哦,否则会报空指针异常
- 全局配置

4.bean的作用域
4.1什么是bean的作用域

常见的主要是:singleton和prototype
singleton:单例。默认就是选的这种
prototype:每次从容器中获取bean的时候,都会创建一个新的实例。(原型)
测试:
<bean id="nowdate" class="java.util.Date" scope="prototype"/>
测试类写法
@Test
public void testDate() {
ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
Date date1 = (Date) app.getBean("nowdate");
try {
Thread.sleep(1000L);//休眠1秒钟
} catch (InterruptedException e) {
e.printStackTrace();
}
Date date2 = (Date) app.getBean("nowdate");
System.out.println(date1.toLocaleString());
System.out.println(date2.toLocaleString());
System.out.println(date1==date2);
}4.2使用注解指定bean的作用域
好博客就要一起分享哦!分享海报
此处可发布评论
评论(0)展开评论
展开评论
您可能感兴趣的博客


新业务
springboot学习
ssm框架课
vue学习
【带小白】java基础速成