先添加jar包
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<!--spring-core-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</dependency>
<!--spring-bean-->
<!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</dependency>
<!--spring-context-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<!--spring-expression-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
</dependency>
</dependencies>
第二步创建配置文件spring.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">
</beans>
第三步书写一个类User
package com.ioc12.entity;
import javax.swing.*;
import java.io.IOException;
import java.util.Properties;
/**
* package_name:com.ioc12.entity
* Author:徐亚远
* Date:2020/1/30 15:51
* 项目名:springDemo01
* Desription:
**/
public class User {
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User{" +
"username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
public void init(){
this.username = reveale(username);
this.password = reveale(password);
}
private String reveale(String value) {
if (value == null ||"".equals(value)){
return value;
}
if (value.startsWith("${")&&value.endsWith("}")){
String key = value.substring(2,value.length()-1 );
return getproperty(key);
}
return value;
}
private String getproperty(String key) {
Properties properties = new Properties();
try {
properties.load(User.class.getClassLoader().getResourceAsStream("ioc10/info.properties"));
} catch (IOException e) {
e.printStackTrace();
}
if (properties.containsKey(key)){
return properties.getProperty(key);
}else {
throw new RuntimeException("not found key:"+key+"in this properties");
}
}
}
第四步 配置spring.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 id="userbeanfactory" class="com.ioc12.entity.UserBeanFactory"/>
<!--有参的-->
<bean id="user" factory-method="getUserBean" factory-bean="userbeanfactory" init-method="init">
<constructor-arg name="username" value="${username}"/>
<constructor-arg name="password" value="${password}"/>
</bean>
</beans>
配置info.properties文件
username=admin
password=admin
书写测试类UserController
package com.ioc12.controller;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* package_name:com.ioc12.controller
* Author:徐亚远
* Date:2020/1/30 15:51
* 项目名:springDemo01
* Desription:
**/
public class UserController {
public static void main(String args []){
ApplicationContext ac = new ClassPathXmlApplicationContext("ioc12/spring.xml");
System.out.println("user:"+ac.getBean("user"));
}
}
测试结果如图: