spring

Spring:是一个开源的控制反转(Inversion of Control,Ioc)和面向切面(AOP)的容器框架,主要目的是简化企业开发
 控制反转:应用本身不负责依赖对象的创建和维护,依赖对象的创建和维护由外部容易负责
 面向切面:实现权限拦截,运行期监控.
 spring官网:http://www.springsource.org/download
 
 工程新增jar包:
  在工程名上点击右键-->properties-->java build path
  在java build path的上方边框中选Libraries-->Add Library...-->MyEclipse Libraries-->选择相应的jar包即可
 
 1.没有提示的原因以及解决方案:
   原因 1:applicationContext.xml配置文件中的格式定义文件xxx.xsd在网络上
    2:myEclipse由于路径设置问题,因此内部的映射不起作用
   方案 1:到myEclipse安装目录搜索spring-beans-3.0.xsd
    2:找到之后把spring-beans-3.0.xsd文件拷贝到其他位置,该位置的路径中不能有.或者..
    3:window-->preference-->myeclipse-->file and editors-->xml-->xml catalog-->add
     location位置:fileSystem-->找到拷贝的xsd文件
     key type位置:schema location
     key位置               :填写http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    4:重新打开配置文件.提示有效
    
 2:spring提供两种容器:
  1.适用于小型项目的容器:
   特点:在容器初始化的时候,不会初始化容器中的对象,而是在用户请求某个对象的时候再行创建,创建完对象放入对象池
    下次访问本对象时,直接从对象池中获取.
   (1)采用系统文件路径方式创建BeanFactory接口对象
    Resource resource = new FileSystemResource("D:\\MyEclipse8.5代码\\test_spring\\src\\applicationContext.xml");
    BeanFactory factory = new XmlBeanFactory(resource);
   (2)采用工程路径目录方式创建BeanFactory接口对象
    Resource resource = new ClassPathResource("applicationContext.xml");
    BeanFactory factory = new XmlBeanFactory(resource);
  2.适用于大型项目的容器(ApplicationContext)
   特点:在容器初始化的时候,自动加载里面的所有资源,使用时直接提供
   (1)采用系统文件路径方式构建容器
    ApplicationContext ac = new FileSystemXmlApplicationContext("D:\\MyEclipse8.5代码\\test_spring\\src\\applicationContext.xml");
   (2)采用工程目录方式构建容器
    ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
   
   <bean scope="prototype"> scope:singleton(默认):容器初始化则创建一个对象放入容器中,无论怎么取得,都返回同以对象  prototype(原型):每次请求返回一个新对象 -->  
    
 3:setter注入:
  java类中定义属性:
   //简单类型的注入
   private String name;
   private int age;
   private Date birth;
   public void setName(String name) {
    this.name = name;
   }
   public void setAge(int age) {
    this.age = age;
   }
   public void setBirth(Date birth) {
    this.birth = birth;
   }
   //注入List
   private List list;
   public void setList(List list) {
    this.list = list;
   }
   //注入Map
   private Map map;
   public void setMap(Map map) {
    this.map = map;
   }
   //注入Set
   private Set set;
   public void setSet(Set set) {
    this.set = set;
   }
   //注入Properties
   private Properties prop;
   public void setProp(Properties prop) {
    this.prop = prop;
   }
   //定义构造器,构造器注入
   private String conName;
   private int conAge;
   public AImple(String conName,int conAge){
    this.conName=conName;
    this.conAge=conAge;
   }
  配置文件applicationContext.xml中注入属性和值
   <bean id="A" class="bean.AImple">
    <property name="name" value="诡异"></property>
    <property name="age" value="24"></property>
    <property name="birth" ref="now"></property>
    <property name="list">
     <list>
      <value>大孩</value>
      <value>小孩</value>
      <value>黑孩</value>
      <value>白孩</value>
     </list>
    </property>
    <property name="map">
     <map>
      <entry key="name" value="小黑"></entry>
      <entry key="age" value="22"></entry>
     </map>
    </property>
    <property name="set">
     <set>
      <value>嘿嘿</value>
      <value>嘻嘻</value>
     </set>
    </property>
    <property name="prop">
     <props>
      <prop key="driverName">oracle.jdbc.driver.OracleDriver</prop>
      <prop key="url">jdbc:oracle:thin:@localhost:1521:moluo</prop>
     </props>
    </property>
    <constructor-arg type="java.lang.String" value="诡异小孩"></constructor-arg>
    <constructor-arg type="int" value="24"></constructor-arg>
   </bean>
   <bean id="now" class="java.util.Date"></bean>

原文地址:https://www.cnblogs.com/liaren/p/spring.html