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>