第八章-spring框架配置扩展
分类: Java ssm 专栏: ssm框架课 标签: spring配置
2022-12-19 09:46:35 839浏览
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)展开评论
展开评论
您可能感兴趣的博客