zoukankan      html  css  js  c++  java
  • java框架--Spring XML 配置基础(一)

     1.代码区

          

    // 测试import 导入entity.xml注入name值

    package cn.sxt.bean;
    
    public class Hello {
        public Hello() {
            System.out.println("hello 被创建");
        }
        private String name;
        private boolean sex;
        
        public boolean isSex() {
            return sex;
        }
        public void setSex(boolean sex) {
            this.sex = sex;
        }
        public void setName(String name) {
            this.name = name;
        }
        public void show(){
            System.out.println("hello,"+name);
        }
    }
    Hello
    package cn.sxt.test;
    
    import org.springframework.beans.factory.BeanFactory;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    import cn.sxt.bean.Hello;
    
    public class Test {
        public static void main(String[] args) {
            // 解析beans.xml文件 生成管理相应的bean对象
            BeanFactory context = new ClassPathXmlApplicationContext("beans.xml");
            Hello hello = (Hello) context.getBean("h1");
            // Hello hello = (Hello)context.getBean("h3");
            // Hello hello= context.getBean(Hello.class);
            hello.show();
        }
    }
    /**
     * hello 被创建 
     * hello,张三
     */
    Test
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd">
       <!-- bean就是java对象  由spring来创建和管理 -->    
       
       <!-- id是bean的标识符 要唯一  如果没有配置id,name默认标识符 
               如果配置id,又配置了name 那么name是别名
               name可以设置多个别名 分隔符可以 是 空格 逗号 分号
               class是bean的全限定名=包名+类名
               如果不配置 id,和name 那么可以根据applicationContext.getBean(Class) 获取对象
       -->
       <bean id="h1" name="hello h2,h3;h4" class="cn.sxt.bean.Hello">
           <property name="name" value="张三"/>
       </bean>
    </beans>
    entity.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"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd">
       <!-- bean就是java对象  由spring来创建和管理 -->    
       
       <!-- id是bean的标识符 要唯一  如果没有配置id,name默认标识符 
               如果配置id,又配置了name 那么name是别名
               name可以设置多个别名 分隔符可以 是 空格 逗号 分号
               class是bean的全限定名=包名+类名
               如果不配置 id,和name 那么可以根据applicationContext.getBean(Class) 获取对象
       -->
       <import resource="config/spring/entity.xml"/>
       
    </beans>
    beans.xml

    //  测试 service层调用dao层的代码,采用bean注入的方式调用

    package cn.sxt.dao;
    
    public interface UserDao {
        public void getUser();
    }
    UserDao
    package cn.sxt.dao.impl;
    
    import cn.sxt.dao.UserDao;
    
    public class UserDaoMySqlImpl implements UserDao{
        @Override
        public void getUser() {
            System.out.println("mysql获取用户数据");
        }
    }
    UserDaoMySqlImpl
    package cn.sxt.dao.impl;
    
    import cn.sxt.dao.UserDao;
    
    public class UserDaoOracleImpl implements UserDao{
        @Override
        public void getUser() {
            System.out.println("oracle获取用户数据");
        }
    }
    UserDaoOracleImpl
    package cn.sxt.service;
    
    public interface UserService {
        public void getUser();
            
    }
    UserService
    package cn.sxt.service.impl;
    
    import cn.sxt.dao.UserDao;
    import cn.sxt.service.UserService;
    
    public class UserServiceImpl implements UserService{
        private UserDao userDao=null;
        public void setUserDao(UserDao userDao) {
            this.userDao = userDao;
        }
        @Override
        public void getUser() {
            userDao.getUser();
        }
    }
    UserServiceImpl
    package cn.sxt.test;
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    import cn.sxt.service.UserService;
    
    public class Test {
        public static void main(String[] args) {
            ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");
            UserService us = (UserService)ac.getBean("service");
            us.getUser();
        }
    }
    //oracle获取用户数据
    Test
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd" default-autowire="byName">
          <bean id="mysqlDao" class="cn.sxt.dao.impl.UserDaoMySqlImpl"/>
          <!-- autowire自动装配  简化spring配置
              no不使用自动装配
              byName 根据名称(set方法名来的)去查找相应的bean,如果有则装配上
              byType 根据类型进行自动装配  不用管bean的id.但是同一种类型的bean只能有一个。建议慎用
              constructor 当通过构造器 注入 实例化bean时 适用byType的方式 装配构造方法
          <bean id="service" class="cn.sxt.service.impl.UserServiceImpl" autowire="constructor"/>
           -->
           
            <bean id="mysqlDao" class="cn.sxt.dao.impl.UserDaoMySqlImpl"/>
          <bean id="oralceDao" class="cn.sxt.dao.impl.UserDaoOracleImpl"/>
          <bean id="service" class="cn.sxt.service.impl.UserServiceImpl">
              <!-- ref引用对象(对象是由spring来创建的) -->
              <property name="userDao" ref="oralceDao"></property>
          </bean>
          
    </beans>
    beans.xml

     

    //测试通过构造注入属性和  userdynamicfactory依赖user 对象, 工厂设计模式

    package cn.sxt.factory;
    
    import java.util.List;
    import java.util.Map;
    import java.util.Set;
    
    import cn.sxt.vo.User;
    
    public class UserDynamicFactory {
        
        public User newInstance(String name){
            return new User(name);
        }
        
        private int age;  
        private List hobby;  
        private Map  friends;  
        private Set  set;  
        private boolean ifMarried;
        public UserDynamicFactory(int age, List hobby, Map friends, Set set,
                boolean ifMarried) {
            super();
            this.age = age;
            this.hobby = hobby;
            this.friends = friends;
            this.set = set;
            this.ifMarried = ifMarried;
        }
        @Override
        public String toString() {
            return "UserDynamicFactory [age=" + age + ", hobby=" + hobby
                    + ", friends=" + friends + ", set=" + set + ", ifMarried="
                    + ifMarried + "]";
        } 
        
    }
    UserDynamicFactory
    package cn.sxt.vo;
    
    public class User {
        
        
        public User(String name) {
            super();
            this.name = name;
        }
    
        private String name;
        
        public void show(){
            System.out.println("name="+name);
        }
    }
    User
    package cn.sxt.test;
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    import cn.sxt.factory.UserDynamicFactory;
    import cn.sxt.vo.User;
    
    public class Test {
        public static void main(String[] args) {
            ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");
              //通过构造可以注入
            UserDynamicFactory dynamicFactory = (UserDynamicFactory)ac.getBean("userFacotry");
            System.out.println(dynamicFactory);
              //
            User user = (User)ac.getBean("user1");
            user.show();
        }
    }
    /**
     * UserDynamicFactory [age=25, hobby=[a, b, c], friends={liuhua=man, xujinglei=female}, set=[d, e, f], ifMarried=true]
     *name=王五
     * 
     */
    Test
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd">
       
       
        //依赖的关系是  userdynamicfactory  依赖user 对象
       <bean id="users" factory-bean="userFacotry" factory-method="newInstance">
            // 代表构造函数的顺序是0开始
            <constructor-arg index="0" value="王五"/>
        </bean>
        <!-- 设置别名 -->
        <alias name="users" alias="user1"/>
        
        <bean id="userFacotry" class="cn.sxt.factory.UserDynamicFactory">
            <constructor-arg index="0" value="25"></constructor-arg>
            <constructor-arg>
                <list>
                    <value>a</value>
                    <value>b</value>
                    <value>c</value>
                </list>
            </constructor-arg>
            <constructor-arg>
                <set>
                    <value>d</value>           
                    <value>e</value>           
                    <value>f</value>           
                </set>
            </constructor-arg>
            <constructor-arg>
                <map>
                      <entry key="liuhua" value="man"></entry>  
                     <entry key="xujinglei" value="female"></entry>            
                 </map>
            </constructor-arg>
            <constructor-arg  index="4" value="true">
            </constructor-arg>
        </bean>
        
        
    </beans>
    beans.xml

    // 通过property 方式注入值

    package cn.sxt.test;
    
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    import cn.sxt.vo.Student;
    import cn.sxt.vo.User;
    
    public class Test {
        public static void main(String[] args) {
            ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");
            //得到student对象值
            Student student=(Student) ac.getBean("student");
             student.show();
            System.out.println("+++++++++++++++++++++++++++++++++++++");
            
            User user1 = (User)ac.getBean("user");
            System.out.println(user1);
            System.out.println("+++++++++++++++++++++++++++++++++++++");
            User user = (User)ac.getBean("u1");
            System.out.println(user);
        }
    }
    /*
     name=张三丰  addr=北京西三旗
    books=
    傲慢与偏见  仲夏夜之梦  雾都孤儿  
    hobbies=[羽毛球, 乒乓球, 玻璃球, 台球球]
    cards={中国银行=149127348932174, 建设银行=622710023478234234}
    games=[lol, dota, cs1.6, dnf]
    wife=null
    info={学号=2015052601, name=小明, sex=男}
    +++++++++++++++++++++++++++++++++++++
    User [name=风清扬, age=230]
    +++++++++++++++++++++++++++++++++++++
    User [name=nico, age=16]
     */
    Test
    package cn.sxt.vo;
    
    public class Address {
        private String address;
    
        public String getAddress() {
            return address;
        }
    
        public void setAddress(String address) {
            this.address = address;
        }
        
    }
    Address
    package cn.sxt.vo;
    
    import java.util.List;
    import java.util.Map;
    import java.util.Properties;
    import java.util.Set;
    
    public class Student {
        private String name;
        private Address addr;
        private String[] books;
        private List<String> hobbies;
        private Map<String,String> cards;
        private Set<String> games;
        private String wife;
        private Properties info;
        public void setName(String name) {
            this.name = name;
        }
        public void setAddr(Address addr) {
            this.addr = addr;
        }
        public void setBooks(String[] books) {
            this.books = books;
        }
        public void setHobbies(List<String> hobbies) {
            this.hobbies = hobbies;
        }
        public void setCards(Map<String, String> card) {
            this.cards = card;
        }
        public void setGames(Set<String> games) {
            this.games = games;
        }
        public void setWife(String wife) {
            this.wife = wife;
        }
        public void setInfo(Properties info) {
            this.info = info;
        }
        public void show(){
            System.out.println("name="+name+"  addr="+addr.getAddress());
            System.out.println("books=");
            for(int i=0;i<books.length;i++){
                System.out.print(books[i]+"  ");
            }
            System.out.println();
            System.out.println("hobbies="+hobbies);
            System.out.println("cards="+cards);
            System.out.println("games="+games);
            System.out.println("wife="+wife);
            System.out.println("info="+info);
        }
    }
    Student
    package cn.sxt.vo;
    
    public class User {
        private String name;
        private int age;
        public User() {
            // TODO Auto-generated constructor stub
        }
        public User(String name, int age) {
            super();
            this.name = name;
            this.age = age;
        }
    
        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;
        }
        @Override
        public String toString() {
            return "User [name=" + name + ", age=" + age + "]";
        }
    }
    User
    <?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:c="http://www.springframework.org/schema/c"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">
            <!-- bean的作用域   
            singleton单列  整个容器中只有一个对象实例 默认是单列
            prototype原型 每次获取bean都产生一个新的对象
            request 每次请求时创建一个新的对象
            session 在会话的范围内时一个对象
            global session 只在portlet下有用,表示是application
            application 在应用范围中一个对象
            -->
          <bean id="addr" class="cn.sxt.vo.Address" scope="singleton">
              <property name="address" value="北京西三旗"/>
          </bean>
          <bean id="student" class="cn.sxt.vo.Student">
              <property name="name" value="张三丰"/>
              <property name="addr" ref="addr"/>
              <property name="books">
                  <array>
                      <value>傲慢与偏见</value>
                      <value>仲夏夜之梦</value>
                      <value>雾都孤儿</value>
                  </array>
              </property>
              <property name="hobbies">
                  <list>
                      <value>羽毛球</value>
                      <value>乒乓球</value>
                      <value>玻璃球</value>
                      <value>台球球</value>
                  </list>
              </property>
              <property name="cards">
                  <map>
                      <entry key="中国银行" value="149127348932174"/>
                      <entry>
                          <key><value>建设银行</value></key>
                          <value>622710023478234234</value>
                      </entry>
                  </map>
              </property>
              <property name="games">
                  <set>
                      <value>lol</value>
                      <value>dota</value>
                      <value>cs1.6</value>
                      <value>dnf</value>
                  </set>
              </property>
              <property name="wife"><null/></property>
              <property name="info">
                  <props>
                      <prop key="学号">2015052601</prop>
                      <prop key="sex">男</prop>
                      <prop key="name">小明</prop>
                  </props>
              </property>
          </bean>  
          <!-- p命名空间注入 属性依然要设置set方法 -->
          <bean id="user" class="cn.sxt.vo.User" p:name="风清扬" p:age="230"/>
          <!-- c命名空间注入要求有对应参数的构造方法 -->
          <bean id="u1" class="cn.sxt.vo.User" c:name="nico" c:age="16"/>
    </beans>
    beans.xml
  • 相关阅读:
    Error: could not open `C:Program FilesJavajre6libi386jvm.cfg'
    异常:java.lang.IllegalStateException: Ambiguous handler methods mapped for HTTP path '/app/userInfoMaint/getProvince.do'
    解析Java反射
    Cause: java.sql.SQLException: 无效的列索引
    Internet Explorer 无法打开该 Internet 站点,请求的站点不可用或无法找到
    解决The JSP specification requires that an attribute name is preceded by whitespace问题
    pl/sql的to_char和to_date
    oracle 在xml中批量插入,批量修改及多组条件查询
    时间转换模板
    Java网络编程从入门到精通(5):使用InetAddress类的getHostName方法获得域名
  • 原文地址:https://www.cnblogs.com/ou-pc/p/8204598.html
Copyright © 2011-2022 走看看