spring
入门
1.新建maven项目(quickstart)
2.去repository里面搜索spring,复制spring Context的dependency,粘贴在pom里面
3.pom里面的jdk版本改成1.8,junit版本改成4.12
4.build里面的全部删掉
5.在java里面的com.xxx里面新建一个service文件夹,然后创建一个UserService类,并且在main下面创建一个resources目录
6.在resources里面创建一个配置文件spring.xml
7.因为是入门所以就从官方文档中拷贝一下复制进xml。。
官方文档:https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#spring-core
里面有两个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
https://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- id:bean标签的唯一标识,一般是对应的JavaBean对象名称的首字母小写
class:JavaBean对象的类路径(包名+类名) -->
<bean id="userService" class="com.biubiu.service.UserService">
<!-- collaborators and configuration for this bean go here -->
</bean>
</beans>
id:bean标签的唯一标识,一般是对应的JavaBean对象名称的首字母小写
class:JavaBean对象的类路径(包名+类名)
ps:必须从第一行开始放,不然会报错。
官方api文档下载:https://repo.spring.io/libs-release-local/org/springframework/spring/
public class UserService {
public void test() {
System.out.println("service test...");
}
}
import com.biubiu.service.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Start01 {
public static void main(String[] args) {
//得到spring的上下文环境
ApplicationContext ac = new ClassPathXmlApplicationContext("spring.xml");
//通过id属性获得指定的Bean对象
UserService userService = (UserService) ac.getBean("userService"); //或者直接在里面传UserService.class,就不用强制类型转换
//调用实例化好的javabean对象中的方法
userService.test();
}
}
spring的bean对象默认用无参构造,没有的话会报错。如果只定义了有参构造,就应该再定义一个无参构造。
IoC
查看对象名字以及数量
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Start01 {
public static void main(String[] args) {
ApplicationContext ac = new ClassPathXmlApplicationContext("spring.xml");
int num = ac.getBeanDefinitionCount(); //数量
System.out.println(num);
String[] names = ac.getBeanDefinitionNames(); //名字
for (String name : names) {
System.out.println(name);
}
}
}
创建非自定义类对象
<bean id="mydate" class="java.util.Date">
<!-- collaborators and configuration for this bean go here -->
</bean>
Date mydate = (Date) ac.getBean("mydate");
System.out.println(mydate);
ps:创建的是类对象,而不是接口对象,所以没有接口也可以。