zoukankan      html  css  js  c++  java
  • Spring基础知识

    Spring主要解决对象的创建及对象之间的依赖关系

    1 IOC容器,控制反转,主要作用是对象的创建交给该容器

    2 依赖注入,解决对象之间的依赖关系

    3 AOP,面向切面编程

    一、IOC容器相关属性,applicationContext.xml配置文件一些属性说明,在3.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"
        xsi:schemaLocation="
            http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd">
      

        <!-- 所有要创建的对象配置都在此处配置 -->
        <bean id="user" class="com.huitong.entity.User"></bean>

            
    </beans>

    1 scope,可以取值singleton,prototype

    singleton是单例模式,在IOC容器创建之前就创建了对象。

    prototype多例模式,用到对象才创建。在IOC容器创建之后创建。

    2 init-method="init_user" destroy-method="destroy_user",这两个属性是在对象创建之后和销毁之前执行初始化、销毁动作。

    二、springIOC容器,是spring核心内容

    主要作用是创建对象、处理对象的依赖关系。一个对象一个bean相对应,如果不创建对象,就不用指定bean属性。class指定使用哪个类。

    1 constructor-arg用来指定带参构造函数参数值。

    2 ref用来指定引用bean值,不用value属性了。

    3 使用工厂类来创建对象有两种方式,1)使用工厂对象创建对象 2)使用静态方法创建对象

    关键属性是

    class=""//指定哪个工厂类,在静态方法中使用

    factory-bean=""//使用工厂对象创建对象,

    factory-method=""//指定使用那个方法创建对象

    三、类属性赋值在spring中常用方法

    1 使用带参数构造函数,配置如下

        <bean id="user2" class="com.huitong.entity.User" factory-bean="" factory-method="">
                <constructor-arg index="0" value="1" type="int"></constructor-arg>
                <constructor-arg index="1" value="allen" ></constructor-arg>
            </bean>

    简单测试

    public void fun2(){
            ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("com/baidu/entity/applicationContext.xml");
            User user2 = (User) context.getBean("user2");
            System.out.println(user2);
        }

    在MVC模式中经常使用到dao/service/action

    现在以user对象做一个简单例子,userDao,userService,userAction类如下

    public class UserDao {
        
        public UserDao() {
            // TODO Auto-generated constructor stub
        }
        
        public void saveUser(){
            System.out.println("保存user");
        }
    
    }
    
    public class UserService {
        private UserDao userDao;
        
        public UserService() {
            // TODO Auto-generated constructor stub
        }
    
        public UserDao getUserDao() {
            return userDao;
        }
    
        public void setUserDao(UserDao userDao) {
            this.userDao = userDao;
        }
        
        public void saveUser(){
            userDao.saveUser();
        }
        
    
    }
    
    public class UserAction {
        private UserService userService;
        
        public UserAction() {
        }
    
        public UserService getUserService() {
            return userService;
        }
    
        public void setUserService(UserService userService) {
            this.userService = userService;
        }
        
        public void save(){
            userService.saveUser();
        }
    }
    View Code

    2 set方法注入,属性关键字property,配置如下

        <bean id="userDao" class="com.baidu.entity.UserDao"></bean> <bean id="userService" class="com.baidu.entity.UserService"> <property name="userDao" ref="userDao"></property> </bean> <bean id="userAction" class="com.baidu.entity.UserAction"> <property name="userService" ref="userService"></property> </bean>

    类对象如果有属性,需要有set方法,才可以使用该方法注入属性。

    简单测试

    public void fun3(){
            ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("com/baidu/entity/bean.xml");
            UserAction userAction = (UserAction) context.getBean("userAction");
            userAction.save();
            
        }

    3 p名称空间,需要在配置文件中引入p schemal,xmlns:p="http://www.springframework.org/schema/p"。配置如下

         <bean id="userDao" class="com.huitong.entity.UserDao"></bean>
            <bean id="userService" class="com.huitong.entity.UserService" p:userDao-ref="userDao"></bean>
            
            <bean id="userAction" class="com.huitong.entity.UserAction" p:userService-ref="userService"></bean>
            

    其中使用...-ref是说明引用的是之前的定义的对象,如果直接类似是p:userDao=""说明使用的是值。

  • 相关阅读:
    取模和取余详解
    如何上传图片到博客园的文章中?
    Java并发关键字Volatile 详解
    MySQL查询基础
    MySQL基础
    Access denied for user 'root'@'localhost' Could not obtain connection
    获取和设置select的option值
    如何将long类型的时间变量转变为标准时间
    【Java】对文件或文件夹进行重命名
    安装GlassFish4 报错:unsupported major.minor version 51.0
  • 原文地址:https://www.cnblogs.com/zhaopengcheng/p/6785107.html
Copyright © 2011-2022 走看看