注入的方式:
1.属性注入(setter方法)
2.构造方法注入
3.p名称空间注入

复杂属性的注入:
1.对象的注入
2.数组注入&List集合注入&Map注入&Properties注入

属性注入

属性注入就是通过setter方法注入Bean的属性值或依赖的对象。

属性植入使用<property>元素,使用name属性指定Bean的属性名称,value属性或者<value>子节点指定属性值

属性注入是实际应用中最常用的注入方式。

构造方法注入

通过构造方法注入Bean的属性值或依赖的对象,它保证了Bean实例化以后就可以使用。

构造器注入在<constructor-arg>元素里申明属性,<constructor-arg>中没有name属性

package logan.spring.study;

public class Car {
private String brand;
private String corp;
private int price;
private int maxspeed;
public Car(String brand, String corp, int price) {
super();
this.brand = brand;
this.corp = corp;
this.price = price;
}
@Override
public String toString() {
return "Car [brand=" + brand + ", corp=" + corp + ", price=" + price + ", maxspeed=" + maxspeed + "]";
}
}
package logan.spring.study;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; public class Main { public static void main(String[] args) {
// TODO Auto-generated method stub
//1.创建Spring的IOC容器对象
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); Car car = ctx.getBean(Car.class);
System.out.println(car); } }
<?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的属性 -->
<bean id="car" class="logan.spring.study.Car">
<constructor-arg value="Audi"></constructor-arg>
<constructor-arg value="Shanghai"></constructor-arg>
<constructor-arg value="3000000"></constructor-arg>
</bean> </beans>

还可以这样配置,根据index来安排属性赋值的序号,第一个为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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 通过构造方法来配置Bean的属性 -->
<bean id="car" class="logan.spring.study.Car">
<constructor-arg value="Audi" index="0"></constructor-arg>
<constructor-arg value="Shanghai" index="1"></constructor-arg>
<constructor-arg value="3000000" index="2"></constructor-arg>
</bean> </beans>

当如下配置时,会不合逻辑,因为Bean里面有两个构造函数,构造函数的参数不一样,所以这个时候根据序号已经不能满足指定使用哪个构造函数还构造Bean的实例,所以会出现实例化出错。

<?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的属性 -->
<bean id="car" class="logan.spring.study.Car">
<constructor-arg value="Audi" index="0"></constructor-arg>
<constructor-arg value="Shanghai" index="1"></constructor-arg>
<constructor-arg value="3000000" index="2"></constructor-arg>
</bean>
<bean id="car2" class="logan.spring.study.Car">
<constructor-arg value="Baoma"></constructor-arg>
<constructor-arg value="Shanghai"></constructor-arg>
<constructor-arg value="240"></constructor-arg>
</bean> </beans>
package logan.spring.study;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; public class Main { public static void main(String[] args) {
// TODO Auto-generated method stub
//1.创建Spring的IOC容器对象
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); Car car = (Car) ctx.getBean("car");
System.out.println(car);
Car car2 = (Car) ctx.getBean("car2");
System.out.println(car2); } }

这个是得到的结果

五月 18, 2017 10:00:14 下午 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@3eb07fd3: startup date [Thu May 18 22:00:14 CST 2017]; root of context hierarchy
五月 18, 2017 10:00:14 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from class path resource [applicationContext.xml]
HelloWorld's Constructor...
HelloWorld's Constructor...
Car [brand=Audi, corp=Shanghai, price=3000000.0, maxspeed=0]
Car [brand=Baoma, corp=Shanghai, price=240.0, maxspeed=0]

可以看到我们的本意是想把240赋值到最大速度上,但是事实上240没有赋值到maxSpeed上而是赋值到价格上。

这个时候的解决方案是根据type来看使用哪一个构造函数。

如下修改配置文件可以正确赋值

<?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的属性 -->
<bean id="car" class="logan.spring.study.Car">
<constructor-arg value="Audi" index="0"></constructor-arg>
<constructor-arg value="Shanghai" index="1"></constructor-arg>
<constructor-arg value="3000000" index="2" type="double"></constructor-arg>
</bean>
<bean id="car2" class="logan.spring.study.Car">
<constructor-arg value="Baoma" type="java.lang.String"></constructor-arg>
<constructor-arg value="Shanghai" type="java.lang.String"></constructor-arg>
<constructor-arg value="240" type="int"></constructor-arg>
</bean> </beans>

得到如下结果:使用构造器注入属性值时可以指定参数的位置和参数的类型!以区分重载的构造器

五月 18, 2017 10:04:26 下午 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@3eb07fd3: startup date [Thu May 18 22:04:26 CST 2017]; root of context hierarchy
五月 18, 2017 10:04:26 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from class path resource [applicationContext.xml]
HelloWorld's Constructor...
HelloWorld's Constructor...
Car [brand=Audi, corp=Shanghai, price=3000000.0, maxspeed=0]
Car [brand=Baoma, corp=Shanghai, price=0.0, maxspeed=240]

还可以如下配置,使用子节点给属性赋值

<?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的属性 -->
<bean id="car" class="logan.spring.study.Car">
<constructor-arg value="Audi" index="0"></constructor-arg>
<constructor-arg value="Shanghai" index="1"></constructor-arg>
<constructor-arg value="3000000" index="2" type="double"></constructor-arg>
</bean>
<bean id="car2" class="logan.spring.study.Car">
<constructor-arg value="Baoma" type="java.lang.String"></constructor-arg>
<constructor-arg value="Shanghai" type="java.lang.String"></constructor-arg>
<constructor-arg type="int">
<value>250</value>
</constructor-arg>
</bean> </beans>

字面值:可以使用字符串表示的值,可以通过<value>元素标签或者value属性进行注入。

基本数据类型及其封装类,String等类型都可以采取字面值注入的方式

若字面值中包含特殊字符,可以使用<![CDATA[]]>把字面值包裹起来。

<?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的属性 -->
<bean id="car" class="logan.spring.study.Car">
<constructor-arg value="Audi" index="0"></constructor-arg>
<constructor-arg value="Shanghai" index="1"></constructor-arg>
<constructor-arg value="3000000" index="2" type="double"></constructor-arg>
</bean>
<bean id="car2" class="logan.spring.study.Car">
<constructor-arg value="Baoma" type="java.lang.String"></constructor-arg>
<constructor-arg type="java.lang.String">
<value><![CDATA[<Shanghai>]]></value>
</constructor-arg>
<constructor-arg type="int">
<value>250</value>
</constructor-arg>
</bean> </beans>

下面看Bean相互引用

组成应用程序的Bean经常需要相互协作以完成应用程序的功能。要使Bean能够相互访问,就必须在Bean配置文件中指定对Bean的引用。

在Bean的配置文件中,可以通过<ref>元素或者ref属性为Bean的属性或者构造器参数指定对Bean的引用。

也可以在属性或者构造器里包含Bean的声明,这样的Bean称为内部Bean。

package logan.spring.study;

public class Person {

    private String name;

    private int age;

    private Car car;

    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;
} public Car getCar() {
return car;
} public void setCar(Car car) {
this.car = car;
} @Override
public String toString() {
return "Person [name=" + name + ", age=" + age + ", car=" + car + "]";
}
}
<?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的属性 -->
<bean id="car" class="logan.spring.study.Car">
<constructor-arg value="Audi" index="0"></constructor-arg>
<constructor-arg value="Shanghai" index="1"></constructor-arg>
<constructor-arg value="3000000" index="2" type="double"></constructor-arg>
</bean>
<bean id="car2" class="logan.spring.study.Car">
<constructor-arg value="Baoma" type="java.lang.String"></constructor-arg>
<constructor-arg type="java.lang.String">
<value><![CDATA[<Shanghai>]]></value>
</constructor-arg>
<constructor-arg type="int">
<value>250</value>
</constructor-arg>
</bean> <bean id="person" class="logan.spring.study.Person">
<property name="name" value="Tom"></property>
<property name="age" value="24"></property>
<property name="car" ref="car2"></property>
</bean> </beans>
package logan.spring.study;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; public class Main { public static void main(String[] args) {
// TODO Auto-generated method stub
//1.创建Spring的IOC容器对象
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); Car car = (Car) ctx.getBean("car");
System.out.println(car);
Car car2 = (Car) ctx.getBean("car2");
System.out.println(car2);
Person person = ctx.getBean(Person.class);
System.out.println(person);
} }

下面是输出结果

五月 18, 2017 10:21:47 下午 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@3eb07fd3: startup date [Thu May 18 22:21:47 CST 2017]; root of context hierarchy
五月 18, 2017 10:21:47 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from class path resource [applicationContext.xml]
HelloWorld's Constructor...
HelloWorld's Constructor...
Car [brand=Audi, corp=Shanghai, price=3000000.0, maxspeed=0]
Car [brand=Baoma, corp=<Shanghai>, price=0.0, maxspeed=250]
Person [name=Tom, age=24, car=Car [brand=Baoma, corp=<Shanghai>, price=0.0, maxspeed=250]]

看内部Bean配置方法:

<?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的属性 -->
<bean id="car" class="logan.spring.study.Car">
<constructor-arg value="Audi" index="0"></constructor-arg>
<constructor-arg value="Shanghai" index="1"></constructor-arg>
<constructor-arg value="3000000" index="2" type="double"></constructor-arg>
</bean>
<bean id="car2" class="logan.spring.study.Car">
<constructor-arg value="Baoma" type="java.lang.String"></constructor-arg>
<constructor-arg type="java.lang.String">
<value><![CDATA[<Shanghai>]]></value>
</constructor-arg>
<constructor-arg type="int">
<value>250</value>
</constructor-arg>
</bean> <bean id="person" class="logan.spring.study.Person">
<property name="name" value="Tom"></property>
<property name="age" value="24"></property>
<property name="car">
<bean class="logan.spring.study.Car">
<constructor-arg value="Ford"></constructor-arg>
<constructor-arg value="Changan"></constructor-arg>
<constructor-arg value="20000000" type="double"></constructor-arg>
</bean>
</property>
</bean> </beans>

运行结果

五月 18, 2017 10:36:26 下午 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@3eb07fd3: startup date [Thu May 18 22:36:26 CST 2017]; root of context hierarchy
五月 18, 2017 10:36:26 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from class path resource [applicationContext.xml]
HelloWorld's Constructor...
HelloWorld's Constructor...
Car [brand=Audi, corp=Shanghai, price=3000000.0, maxspeed=0]
Car [brand=Baoma, corp=<Shanghai>, price=0.0, maxspeed=250]
Person [name=Tom, age=24, car=Car [brand=Ford, corp=Changan, price=2.0E7, maxspeed=0]]

注意:内部Bean不能被外部Bean引用。

还可以如下配置,根据构造方法来实例化Bean

<?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的属性 -->
<bean id="car" class="logan.spring.study.Car">
<constructor-arg value="Audi" index="0"></constructor-arg>
<constructor-arg value="Shanghai" index="1"></constructor-arg>
<constructor-arg value="3000000" index="2" type="double"></constructor-arg>
</bean>
<bean id="car2" class="logan.spring.study.Car">
<constructor-arg value="Baoma" type="java.lang.String"></constructor-arg>
<constructor-arg type="java.lang.String">
<value><![CDATA[<Shanghai>]]></value>
</constructor-arg>
<constructor-arg type="int">
<value>250</value>
</constructor-arg>
</bean> <bean id="person" class="logan.spring.study.Person">
<property name="name" value="Tom"></property>
<property name="age" value="24"></property>
<property name="car">
<bean class="logan.spring.study.Car">
<constructor-arg value="Ford"></constructor-arg>
<constructor-arg value="Changan"></constructor-arg>
<constructor-arg value="20000000" type="double"></constructor-arg>
</bean>
</property>
</bean> <bean id="person2" class="logan.spring.study.Person">
<constructor-arg value="Jerry"></constructor-arg>
<constructor-arg value="25"></constructor-arg>
<constructor-arg ref="car"></constructor-arg>
</bean> </beans>
package logan.spring.study;

public class Person {

    private String name;

    private int age;

    private Car car;

    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;
} public Car getCar() {
return car;
} public void setCar(Car car) {
this.car = car;
} @Override
public String toString() {
return "Person [name=" + name + ", age=" + age + ", car=" + car + "]";
} public Person() {
// TODO Auto-generated constructor stub
} public Person(String name, int age, Car car) {
super();
this.name = name;
this.age = age;
this.car = car;
} }
package logan.spring.study;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; public class Main { public static void main(String[] args) {
// TODO Auto-generated method stub
//1.创建Spring的IOC容器对象
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); Car car = (Car) ctx.getBean("car");
System.out.println(car);
Car car2 = (Car) ctx.getBean("car2");
System.out.println(car2);
Person person = (Person) ctx.getBean("person2");
System.out.println(person);
} }

输出结果如下:

五月 18, 2017 10:43:51 下午 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@3eb07fd3: startup date [Thu May 18 22:43:51 CST 2017]; root of context hierarchy
五月 18, 2017 10:43:51 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from class path resource [applicationContext.xml]
HelloWorld's Constructor...
HelloWorld's Constructor...
Car [brand=Audi, corp=Shanghai, price=3000000.0, maxspeed=0]
Car [brand=Baoma, corp=<Shanghai>, price=0.0, maxspeed=250]
Person [name=Jerry, age=25, car=Car [brand=Audi, corp=Shanghai, price=3000000.0, maxspeed=0]]

2.数组注入&List集合注入&Map注入&Properties注入

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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 配置bean
class:bean的全类名,通过反射的方式在IOC容器中创建bean,所以要求Bean中必须有无参的构造函数
id:表示容器的bean,id唯一 -->
<bean id="persionService" class="com.study.entity.Persion">
<property name="name" value="xiaozhang"></property>
<property name="age" value="29"></property>
<property name="car" ref="car2"></property>
</bean> <bean id="persionService1" class="com.study.entity.Persion">
<property name="name" value="xiaozhang"></property>
<property name="age" value="29"></property>
<property name="car">
<bean class="com.study.entity.Car">
<constructor-arg value="Ford"></constructor-arg>
<constructor-arg value="Changan"></constructor-arg>
<constructor-arg value="2000000" type="int"></constructor-arg>
</bean>
</property>
</bean> <bean id="persionService3" class="com.study.entity.Persion">
<constructor-arg value="Jerry"></constructor-arg>
<constructor-arg value="26"></constructor-arg>
<constructor-arg ref="car"></constructor-arg>
</bean>
<bean id="persionService4" class="com.study.entity.Persion">
<property name="name" value="Tom"></property>
<property name="age" value="27"></property>
<property name="car" ref="car"></property>
<property name="wayToCompany">
<list>
<value>walk</value>
<value>bike</value>
<value>subway</value>
<value>walk</value>
</list>
</property>
<property name="money">
<map>
<entry key="三月" value="10000"></entry>
<entry key="四月" value="10001"></entry>
<entry key="五月" value="10002"></entry>
<entry key="六月" value="10003"></entry>
</map>
</property>
</bean>
<bean id="car" class="com.study.entity.Car">
<constructor-arg value="Audi" index="1"></constructor-arg>
<constructor-arg value="Shanghai" index="0"></constructor-arg>
<constructor-arg value="3000000" index="2"></constructor-arg>
</bean> <bean id="car2" class="com.study.entity.Car">
<constructor-arg index="1">
<value><![CDATA[<Shanghai>]]></value>
</constructor-arg>
<constructor-arg value="Shanghai" index="0"></constructor-arg>
<constructor-arg value="240" index="2" type="double"></constructor-arg>
</bean> </beans>

Persion.java

package com.study.entity;

import java.util.List;
import java.util.Map; public class Persion { private String name;
private Integer age;
private Car car;
private List wayToCompany;
private Map money;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Car getCar() {
return car;
}
public void setCar(Car car) {
this.car = car;
} public List getWayToCompany() {
return wayToCompany;
}
public void setWayToCompany(List wayToCompany) {
this.wayToCompany = wayToCompany;
}
public Map getMoney() {
return money;
}
public void setMoney(Map money) {
this.money = money;
} public Persion(String name, Integer age, Car car) {
super();
this.name = name;
this.age = age;
this.car = car;
}
public Persion() {
super();
// TODO Auto-generated constructor stub
}
@Override
public String toString() {
return "Persion [name=" + name + ", age=" + age + ", car=" + car + ", wayToCompany=" + wayToCompany + ", money="
+ money + "]";
} }

TestPersion.java

package com.study.entity;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; public class TestPersion { public static void main(String[] args) {
// TODO Auto-generated method stub
Persion p1 = new Persion();
p1.setName("xiaoming");
System.out.println(p1.getName()); ApplicationContext ext = new ClassPathXmlApplicationContext("applicationContext.xml"); Persion p2 = (Persion) ext.getBean("persionService");
System.out.println(p2.toString()); Persion p3 = (Persion) ext.getBean("persionService1");
System.out.println(p3.toString()); Persion p4 = (Persion) ext.getBean("persionService3");
System.out.println(p4.toString()); Persion p5 = (Persion) ext.getBean("persionService4");
System.out.println(p5.toString());
} }

输出结果:

xiaoming
三月 06, 2020 10:12:14 下午 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@4d405ef7: startup date [Fri Mar 06 22:12:14 CST 2020]; root of context hierarchy
三月 06, 2020 10:12:15 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from class path resource [applicationContext.xml]
Persion [name=xiaozhang, age=29, car=Car [brand=Shanghai, corp=<Shanghai>, price=0, maxSpeed=240.0], wayToCompany=null, money=null]
Persion [name=xiaozhang, age=29, car=Car [brand=Ford, corp=Changan, price=2000000, maxSpeed=0.0], wayToCompany=null, money=null]
Persion [name=Jerry, age=26, car=Car [brand=Shanghai, corp=Audi, price=3000000, maxSpeed=0.0], wayToCompany=null, money=null]
Persion [name=Tom, age=27, car=Car [brand=Shanghai, corp=Audi, price=3000000, maxSpeed=0.0], wayToCompany=[walk, bike, subway, walk], money={三月=10000, 四月=10001, 五月=10002, 六月=10003}]

大家可以看到,数组和List集合的注入方式是一样的。Map由于是以键值对的形式存储的,所以注入稍微有一点区别。

Spring入门第三课的更多相关文章

  1. Spring入门第三十课

    基于XML的方式配置事务 直接看代码: package logan.study.spring.tx.xml; public interface BookShopDao { //根据书号获取书的单价 p ...

  2. Kotlin入门第三课:数据类型

    前文链接: Kotlin学习第一课:从对比Java开始 Kotlin入门第二课:集合操作 初次尝试用Kotlin实现Android项目 Kotlin的数据类型与Java类似,因此这篇文章主要看Kotl ...

  3. Spring入门第六课

    XML配置里的Bean自动装配 Spring IOC容器可以自动装配Bean.需要做的仅仅是在<bean>的autowire属性里指定自动装配的模式 ByType(根据类型自动装配):若I ...

  4. Spring入门第五课

    集合属性 在Spring中可以通过一组内置的xml标签(如:<list>,<set>,<map>)来配置集合属性. 配置java.util.List类型的属性,需要 ...

  5. Spring入门第四课

    注入参数详解:null值和级联属性 可以使用专用的<null/>元素标签为Bean的字符串或其他对象类型的属性注入null值. 和Struts,Hiberante等框架一样,Spring支 ...

  6. Spring入门第十三课

    通过FactoryBean来配置Bean package logan.spring.study.factoryBean; public class Car { private String brand ...

  7. Spring入门第十一课

    IOC容器中Bean的生命周期 Spring IOC容器可以管理Bean的生命周期,Spring允许在Bean生命周期的特定点执行定制的任务. Spring IOC容器对Bean的生命周期进行管理的过 ...

  8. Spring入门第十课

    Spring表达式语言:SpEL Spring表达式语言(简称SpEL)是一个支持运行时查询和操作对象图的强大的表达式语言. 语法类似于EL:SpEL使用#{...}作为定界符,所有在大括号中的字符都 ...

  9. Spring入门第八课

    看如下代码 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http:// ...

随机推荐

  1. [算法]找到无序数组中最小的K个数

    题目: 给定一个无序的整型数组arr,找到其中最小的k个数. 方法一: 将数组排序,排序后的数组的前k个数就是最小的k个数. 时间复杂度:O(nlogn) 方法二: 时间复杂度:O(nlogk) 维护 ...

  2. spring.jar的下载地址

    http://repo.spring.io/release/org/springframework/spring/

  3. HTML5调用百度地图API进行地理定位实例

    自从HTML5的标准确定以后,越来越多的网站使用HTML5来进行开发.虽然对HTML5支持的浏览器不是很多,但是依然抵挡不了大伙对HTML5开发的热情.今天为大家带来的是使用HTML5调用百度地图AP ...

  4. JavaUtil_00_资源帖

    一.精选工具包 1.Hutool Hutool wiki 二.资源 1.

  5. Java_总结_00_资源贴

    1.Java程序员从笨鸟到菜鸟 (http://blog.csdn.net/column/details/java.html) 2. java进阶开发(http://blog.csdn.net/col ...

  6. Linux基本语法

    Shell编程 摘要: Shell历史 Shell的作用是解释用户的命令,用户输入一条命令,Shell就解释执行一条,这条方式称为交互式(interactive),Shell还有一种执行命令的方式称为 ...

  7. Javascript-- jQuery事件篇(3)

    on()的多事件绑定 之前学的鼠标事件,表单事件与键盘事件都有个特点,就是直接给元素绑定一个处理函数,所有这类事件都是属于快捷处理.翻开源码其实可以看到,所有的快捷事件在底层的处理都是通过一个&quo ...

  8. iOS+PHP图片上传

    这篇博客用于实现iOS客户端通过POST请求,将图片上传到服务器上.服务器端语言采用PHP,服务器环境使用MAMP搭建.先使用浏览器测试图片是否可以上传,浏览器测试成功之后再测试iOS客户端是否可以成 ...

  9. DOM基础知识整理

    --<JavaScript高级程序设计>Chapter10学习笔记 一.节点层次 1.Node类型 1)(Node).nodeType属性 节点nodeType属性有12种. 检测node ...

  10. JavaScript-Tool:pluload

    ylbtech-JavaScript-Tool:pluload Plupload是用于处理文件上传的JavaScript API,支持多文件选择.文件类型过滤.请求分块.客户端图像缩放等功能,使用不同 ...