入门练习
创建web项目
项目结构如下:
项目名
----src
-------main
----------java
-------------com.wei
-------------------bean
------------------------.class
----------resources
----------webapp(web项目)
-------test
----------java
-------------com.wei.test
----------------------.class
----------resources
----pom.xml
项目名:spring01
引入jar包
如果练习IOC ,需要引入 org.springframework.bean , org.springframework.context.
Maven项目,pom.xml添加一下内容:
<!--Spring框架基本的核心工具类-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.1.3.RELEASE</version>
</dependency>
<!--Bean工厂与bean的装配-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.1.3.RELEASE</version>
</dependency>
<!--spring的context上下文即IoC容器-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.1.3.RELEASE</version>
</dependency>
<!--提供了对第三方库集成到 Spring-context 的支持比如缓存等-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>5.1.3.RELEASE</version>
</dependency>
<!--日志-->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
</dependency>
<!--测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
引入log4j.properties
文件位置:src\main\resources目录下
在log4j.properties中,写入一下内容
log4j.rootLogger=ERROR,A1
log4j.logger.org.mybatis = ERROR
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c]-[%p] %m%n
创建一个操作类
文件位置:src\main\java\com.wei.bean目录下
package com.wei.bean;
import com.sun.javaws.IconUtil;
public class Person {
private String name;
private Integer age;
private Car car;
public Person(){
System.out.println("Person对象产生");
}
public Person(String name,Car car){
this.name=name;
this.car=car;
System.out.println("Person的参构造方法:"+name+car);
}
public void setAge(Integer age) {
this.age = age;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public String getName() {
return name;
}
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 void init(){
System.out.println("初始化init()");
}
public void destroy(){
System.out.println("销毁destroy()");
}
}
创建配置文件
建议命名: applicationContext.xml
建议位置:src\main\resources目录下
<?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">
<!--
id 和 name 可以同时存在,作为bean的标识
class添加的应该是class的全路径
范围scope: singleton(默认值) 单例 prototype 多例
lazy-init:在scope默认值时有效 false默认值,不延迟创建,即在启动时候就创建对象.
true 迟初始化,在用到对象的时候才会创建对象.
在Person类中添加初始化方法和销毁方法: init-method="init-class-name" destroy-method="destroy-class-name"
-->
<bean id="personId"
name="personName"
init-method="init"
destroy-method="destroy"
class="com.wei.bean.Person"> </bean>
</beans>
测试用例
位置:test\java\com.wei.demo目录下创建类CreateTest1.class
package com.wei.demo;
import com.wei.bean.Person;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class CreateTest1 {
//使用静态工厂创建对象
@Test
public void test1(){
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext-Create.xml");
Person person=applicationContext.getBean("PersonFactory",Person.class);
System.out.println(person);
}
}