第八章-spring框架配置扩展

飞一样的编程
飞一样的编程
擅长邻域:Java,MySQL,Linux,nginx,springboot,mongodb,微信小程序,vue

分类: Java ssm 专栏: ssm框架课 标签: spring配置

2022-12-19 09:46:35 627浏览

spring配置扩展

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配置数据源

  1. 在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&amp;serverTimezone=Asia/Shanghai"
		>
	</Resource>
</Context>
  1. 修改spring配置文件
 <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
      <property name="jndiName">
          <value>java:comp/env/jdbc/cvs_db</value>
      </property>
  </bean>

2.拆分spring配置文件

可以按模块拆分也可以按功能拆分,以分模块拆分为例:

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

  1. 多个参数的方式
ApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext-dao.xml","classpath:applicationContext-service.xml")
  1. 数组的方式
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({"classpath:applicationContext-dao.xml","classpath:applicationContext-service.xml"})

3.bean的自动装配

  1. 局部配置

autowire="byName"

也可以用autowire="byType"

也可以用autowire=“constructor”

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

  1. 全局配置

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展开评论

暂无评论,快来写一下吧

展开评论

您可能感兴趣的博客

客服QQ 1913284695