Spring框架学习:ApplicationContext.xml的配置和运用

ApplicationContext.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--    <bean name="userDao" class="com.igeek.dao.UserDaoImpl"/>-->

    <bean name="userDao" class="com.igeek.dao.UserDao"/>

<!--    id 唯一标识 等同于name-->

    <bean id="userDaoImpl" class="com.igeek.dao.UserDaoImpl"/>
<!--    3种方式-->
<!--    property value 传递普通值-->
<!--    ref 传递被spring管理的对象,引用-->
    <bean name="user" class="com.igeek.entity.User">
        <property name="name" value="zhangsan"/>
        <property name="age" value="25"/>
        <property name="dao" ref="userDao"/>
    </bean>
<!--    根据构造器下表注入 参数个数相同时,优先匹配string类型,再去数据转换-->
    <bean name="user1" class="com.igeek.entity.User">
        <constructor-arg index="0" value="dieqi"/>
        <constructor-arg index="1" value="23"/>
<!--        <constructor-arg type="java.lang.String" value="zhangsan"/>-->
<!--        <constructor-arg type="int" value="30"/>-->
    </bean>
<!--    p标签注入-->
    <bean name="user2" class="com.igeek.entity.User" p:name="XiaoQiao" p:age="17" p:password="123456"/>
</beans>

如下是Test1的测试类

package com.igeek.test;

import com.igeek.dao.UserD;
import com.igeek.dao.UserDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

public class Test1 {

    public static void main(String[] args) {
//        ApplicationContext apx = new ClassPathXmlApplicationContext("applicationContext.xml");
        FileSystemXmlApplicationContext apx = new FileSystemXmlApplicationContext("C:\\Users\\Easion.W\\IdeaProjects\\Spring\\src\\main\\resources\\applicationContext.xml");
        // getBean(name id 都可以访问) 根据类型type找bean对象
        UserD userDao = (UserD)apx.getBean("userDao");
        userDao.insert(null);
//        ((ClassPathXmlApplicationContext)apx).close();
        ((FileSystemXmlApplicationContext)apx).close();
    }

}

如下是Test2的测试类

package com.igeek.test;

import com.igeek.dao.UserD;
import com.igeek.entity.User;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test2 {

    public static void main(String[] args) {
        ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
//        User user = (User) classPathXmlApplicationContext.getBean("user");
//        User user1 = (User) classPathXmlApplicationContext.getBean("user1");
        User user2 = (User) classPathXmlApplicationContext.getBean("user2");
        System.out.println(user2);
        ((ClassPathXmlApplicationContext)classPathXmlApplicationContext).close();
    }
}

 User类

package com.igeek.entity;

import com.igeek.dao.UserDao;

public class User {
    private String name;
    private int age;
    private String password;

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    private UserDao dao;

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", password='" + password + '\'' +
                ", dao=" + dao +
                '}';
    }

    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public UserDao getDao() {
        return dao;
    }

    public User() {
    }

    public void setDao(UserDao dao) {
        this.dao = dao;
    }

    public User(String name, int age, UserDao dao) {
        this.name = name;
        this.age = age;
        this.dao = dao;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }


}

UserD

package com.igeek.dao;

public interface UserD {
    void insert(Object o);

}

UserDao

package com.igeek.dao;

public class UserDao implements UserD{

    public void insert(Object o) {
        System.out.println("userdao");
    }
}

UserDaoImpl

package com.igeek.dao;

public class UserDaoImpl implements UserD {
    public void insert(Object o) {
        System.out.println("userdaoimpl");
    }
}

UserService

package com.igeek.service;

import com.igeek.dao.UserD;
import com.igeek.dao.UserDaoImpl;

public class UserService {
    UserD dao = new UserDaoImpl();
}
  • XML命名空间和Schema的使用,通过命名空间xmlns定义命名空间URI,通过schemaLocation指定命名空间的Schema文件位置。
  • 通过<beans>标签定义一个Spring容器。
  • 使用<bean>标签定义一个Bean的定义。在这里,使用"class"属性指定Bean的类,并使用"name"属性或"id"属性指定Bean的名称或唯一标识。
  • 使用<property>标签设置Bean的属性值。在这里,通过"name"属性指定属性名称,通过"value"属性指定属性的值,或通过"ref"属性指定引用另一个被Spring管理的对象。
  • 使用<constructor-arg>标签设置Bean的构造函数参数值。通过"index"属性指定参数的索引位置,通过"value"属性指定参数的值,或通过"type"属性指定参数的类型。
  • 使用<p:propertyName>标签设置Bean的属性值。在这里,通过"p:name"属性指定属性名称,通过"p:value"属性指定属性的值。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"> <description>Spring公共配置文件</description> <!-- mes 的數據庫 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass" value="oracle.jdbc.driver.OracleDriver"/> <property name="jdbcUrl" value="jdbc:oracle:thin:@10.142.252.132:1521:mestest"/> <property name="maxPoolSize" value="10"></property> <property name="maxIdleTime" value="1800"></property> <property name="minPoolSize" value="1"></property> <property name="initialPoolSize" value="1"></property> <property name="properties"> <ref bean="mesDatasourcePropertiesFactory" /> </property> </bean> <!-- c3p0数据源的一个专有属性,只可以存放密码和用户名 --> <bean id="mesDatasourcePropertiesFactory" class="com.ccc.db.impl.DatasourcePropertiesFactory" factory-method="getProperties"> <!-- userName--> <constructor-arg type="java.lang.String"> <value>jxg/Qr4VbxU=</value> </constructor-arg> <!-- password --> <constructor-arg type="java.lang.String"> <value>jxg/Qr4VbxU=</value> </constructor-arg> <!-- 生产环境模式 ,才特殊处理加密密码--> <constructor-arg type="java.lang.String"> <value>true</value> </constructor-arg> </bean> <!-- ptc windchill的數據庫 --> <bean id="dataSourcePdm" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass" value="oracle.jdbc.driver.OracleDriver"/> <property name="jdbcUrl" value="jdbc:oracle:thin:@10.142.252.132:1521:mesdev"/> <property name="maxPoolSize" value="10"></property> <property name="maxIdleTime" value="1800"></property> <property name="minPoolSize" value="1"></property> <property name="initialPoolSize" value="1"></property> <property name="properties"> <ref bean="ptcDatasourcePropertiesFactory" /> </property> </bean> <!-- c3p0数据源的一个专有属性,只可以存放密码和用户名 --> <bean id="ptcDatasourcePropertiesFactory" class="com.ccc.db.impl.DatasourcePropertiesFactory" factory-method="getProperties"> <!-- userName--> <constructor-arg type="java.lang.String"> <value>WgDH/SDIJfs=</value> </constructor-arg> <!-- password --> <constructor-arg type="java.lang.String"> <value>WgDH/SDIJfs=</value> </constructor-arg> <!-- 生产环境模式 ,才特殊处理加密密码--> <constructor-arg type="java.lang.String"> <value>true</value> </constructor-arg> </bean> <!-- mes數據源代理 --> <bean id="dataSourceProxy" class="org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy" p:targetDataSource-ref="dataSource"/> <!-- 对web包中的所有类进行扫描,以完成Bean创建和自动依赖注入的功能--> <context:component-scan base-package="com.ccc"/> <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" p:order="0" /> <!-- 配置事务管理器 針對MES數據庫--> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager " p:dataSource-ref="dataSourceProxy"/> <!-- 配置事务的传播特性 --> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="add*" propagation="REQUIRED"/> <tx:method name="insert*" propagation="REQUIRED"/> <tx:method name="delete*" propagation="REQUIRED"/> <tx:method name="update*" propagation="REQUIRED"/> <tx:method name="*" read-only="true"/> </tx:attributes> </tx:advice> <!-- 那些类的哪些方法参与事务 --> <aop:config> <aop:pointcut id="allManagerMethod" expression="execution(* com.ccc..*.*(..))"/> <aop:advisor pointcut-ref="allManagerMethod" advice-ref="txAdvice"/> </aop:config> <!-- 配置事务管理器,這個事務性是爭對pdm數據庫的 --> <bean id="transactionManagerPdm" class="org.springframework.jdbc.datasource.DataSourceTransactionManager " p:dataSource-ref="dataSourcePdm"/> <!-- 配置事务的传播特性 --> <tx:advice id="txAdvicePdm" transaction-manager="transactionManagerPdm"> <tx:attributes> <tx:method name="add*" propagation="REQUIRED"/> <tx:method name="insert*" propagation="REQUIRED"/> <tx:method name="delete*" propagation="REQUIRED"/> <tx:method name="update*" propagation="REQUIRED"/> <tx:method name="*" read-only="true"/> </tx:attributes> </tx:advice> <!-- 那些类的哪些方法参与事务 --> <aop:config> <aop:pointcut id="allManagerMethodPdm" expression="execution(* com.ccc.pdm..*.*(..))"/> <aop:advisor pointcut-ref="allManagerMethodPdm" advice-ref="txAdvicePdm"/> </aop:config> <!-- ibatis插件 --> <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean" p:dataSource-ref="dataSourceProxy"> <property name="configLocation"> <value>classpath:SqlMapConfig.xml</value> </property> </bean> <bean id="sqlMapClientTemplate" class="org.springframework.orm.ibatis.SqlMapClientTemplate"> <property name="sqlMapClient"> <ref bean="sqlMapClient" /> </property> </bean> <!-- 配置要拦截的url,防止2次提交或做其他數據統計用 <bean id="doubleSubmitInterceptor" class="com.ccc.filter.DoubleSubmitInterceptor"> <property name="mappingURL" value=".html" /> <property name="viewURL" value=".html" /> </bean> <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" p:order="0"> <property name="interceptors"> <list> <ref bean="doubleSubmitInterceptor"/> </list> </property> </bean> --> <!-- JDBC template注入及事務配置 --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource"><ref bean="dataSourceProxy"/></property> </bean> </beans>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值