前言:
创建maven项目,在pom.xml引入spring框架
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.4</version>
</dependency>
运行项目时候总会因为版本过期,解决办法如下
<!-- 指定版本-->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
基于XML
1、 流程
(1)创建XML文件,配置对象
<!-- bean-->
<!-- scope配置单例或原型 -->
<!-- 无参构造创建对象 -->
<bean id="student" class="com.huhao.entity.Student" scope="prototype">
<property name="id" value="1"></property>
<property name="name" value="张三"></property>
<property name="age" value="18"></property>
</bean>
<!--有参创建对象-->
<bean id="student" class="com.huhao.entity.Student">
<constructor-arg name="id" value="2"></constructor-arg>
<constructor-arg name="name" value="李四"></constructor-arg>
<constructor-arg name="age" value="10"></constructor-arg>
</bean>
(2)加载IOC容器,spring会自动读取XML文件的配置,去自当创建各种对象,放入缓冲池中
ApplicationContext ioc = new ClassPathXmlApplicationContext("spring.xml");
(3)程序员冲缓冲池取出使用即可
//通过值获取对象
Student student = (Student) ioc.getBean("student");
//通过类获取对象
Student bean = ioc.getBean(Student.class);
System.out.println(bean);
//spring默认单例模式
System.out.println(student == bean); //单例为true
2、对象之间的级联
<!--有参创建对象-->
<bean id="student" class="com.huhao.entity.Student">
<constructor-arg name="id" value="2"></constructor-arg>
<constructor-arg name="name" value="李四"></constructor-arg>
<constructor-arg name="age" value="10"></constructor-arg>
<constructor-arg name="aClass" ref="class"></constructor-arg>
</bean>
<bean id="class" class="com.huhao.entity.Class">
<property name="id" value="1"></property>
<property name="name" value="一班"></property>
</bean>
基于注解
1、流程
(1)在需要注入IOC的地方处添加注解,标注一下,告诉spring需要注入bean
(2)加载IOC容器,spring会自动读取所有添加了的注解的类,通过反射机制创建bean,注入到IOC容器中
(3)程序员冲缓冲池取出使用即可
@Data
@Component(value = "kkk") //默认是首字母小写
public class Account {
@Value("1")
private Integer id;
@Value("王五")
private String name;
@Value("18")
private Integer age;
//对象之间级联
@Autowired //自动装载,,通过值或类型
@Qualifier("Ding")//通过定义的值
private Order order;
}
@Data
@Component(value = "Ding")
public class Order {
@Value("123456")
private String id;
@Value("12.1")
private Double price;
}
public class test2 {
public static void main(String[] args) {
//指定添加注解的包
ApplicationContext ioc = new AnnotationConfigApplicationContext("com.huhao.Annotation");
//通过类
Account bean = ioc.getBean(Account.class);
//通过值
Object account = ioc.getBean("kkk");
System.out.println(account);
}
}