前提准备POM配置依赖:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.hsx.project</groupId>
<artifactId>project-core</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>project-core</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
<dependencies>
<!-- Core Container 核心容器 -->
<!-- 核心工具类,Spring其它模块大量使用Spring-core -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.3.2.RELEASE</version>
</dependency>
<!-- 运行时Spring容器 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.2.RELEASE</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
一、App.java main方法
package com.hsx.project.project_core;
import org.springframework.context.ApplicationContext;
//这是第一种方式导入的包:import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.hsx.project.project_core.domain.Car;
/**
* Hello world!
*
*/
publicclassApp
{
publicstaticvoid main( String[]args ){
/*
* 方法一、// 1)用基于注解的方式创建IOC容器
*
AnnotationConfigApplicationContextcontext= new AnnotationConfigApplicationContext(Myconfig.class);
// 2)获取bean对象,并打印出来
System.out.println(context.getBean(Car.class));
System.out.println(context.getBean("cars"));
*/
//方法二、用基于applicationContext.xml配置方式
ApplicationContext Context1 =newClassPathXmlApplicationContext("applicationContext.xml");
//获取bean对象
Car car= (Car)Context1.getBean("car");
System.out.println(car);
//System.out.println(car.toString());
}
}
二、Car.java javabean对象
package com.hsx.project.project_core.domain;
import java.util.List;
import java.util.Map;
import java.util.Set;
publicclassCar {
//基本数据类型
private Stringcolor;
private Integerspeed;
//引用类
private Personperson;
//集合(接口)
private List<?>lists;
private Set<?>sets;
private Map<?, ?>maps;
public String getColor() {
returncolor;
}
publicvoid setColor(Stringcolor) {
this.color =color;
}
public Integer getSpeed() {
returnspeed;
}
publicvoid setSpeed(Integerspeed) {
this.speed =speed;
}
public List<?>getLists() {
returnlists;
}
publicvoid setLists(List<?>lists) {
this.lists =lists;
}
public Set<?> getSets(){
returnsets;
}
publicvoid setSets(Set<?>sets) {
this.sets =sets;
}
public Map<?, ?>getMaps() {
returnmaps;
}
publicvoid setMaps(Map<?, ?>maps){
this.maps =maps;
}
public Person getPerson() {
returnperson;
}
publicvoid setPerson(Personperson) {
this.person =person;
}
@Override
public String toString() {
return"Car [color="+color+ ", speed=" + speed+ ", person=" +person+ ", lists=" + lists+ ", sets="+sets
+", maps="+maps+ "]";
}
}
package com.hsx.project.project_core.domain;
publicclassPerson {
private Stringname;
private StringidCard;
public String getName() {
returnname;
}
publicvoid setName(Stringname) {
this.name =name;
}
public String getIdCard() {
returnidCard;
}
publicvoid setIdCard(StringidCard) {
this.idCard =idCard;
}
}
Person.java 对象
package com.hsx.project.project_core.domain;
publicclassPerson {
private Stringname;
private StringidCard;
public String getName() {
returnname;
}
publicvoid setName(Stringname) {
this.name =name;
}
public String getIdCard() {
returnidCard;
}
publicvoid setIdCard(StringidCard) {
this.idCard =idCard;
}
}
三、方式1)用基于注解的方式 Myconfig.java配置类
package com.hsx.project.project_core;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Scope;
import com.hsx.project.project_core.domain.Car;
/**
* 标明这是个配置类
* @authorHsx
*
*/
@Configuration
publicclassMyconfig {
@Bean(name="cars")
@Scope("prototype")
public Car creatCar(){
returnnew Car();
}
}
四、方式2)基于applicationContext.xml配置的方式
<?xmlversion="1.0"encoding="UTF-8"?>
<beansxmlns="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">
<beanid="car"class="com.hsx.project.project_core.domain.Car">
<propertyname="color"value="red"></property>
<propertyname="speed"value="80"></property>
<!-- <ref bean="person"/>等价于ref="person"推荐下面写法
spring的配置文件可能会有多个
<propertyname="a" ref="b" />就是找当前配置文件里的bean也就是b
<refbean ="b"/> 是寻找全局中的 bean;
-->
<propertyname="person"ref="person"></property>
<propertyname="lists">
<list>
<value>"奥迪"</value>
<value>"奔驰"</value>
<value>"宝马"</value>
<refbean="person"></ref>
</list>
</property>
<propertyname="sets">
<set>
<value>"玛莎拉蒂"</value>
<value>"兰博基尼"</value>
<refbean="person"></ref>
</set>
</property>
<propertyname="maps">
<map>
<entrykey="张三"value="老板"></entry>
<entrykey="李四"value="经理"></entry>
<entrykey="王五"value-ref="person"/>
</map>
</property>
</bean>
<beanid="person"class="com.hsx.project.project_core.domain.Person">
<propertyname="name"value="小米"></property>
<propertyname="idCard"value="4310111111111"></property>
</bean>
</beans>