Spring环境的搭建:
1 创建普通java工程即可
按照之前的创建的工程来就行:
2 添加jar包+log4j
链接:https://pan.baidu.com/s/1yAGgCHCY2yL1F93Qv0hHTw 密码:l9q5
3 创建配置文件(默认文件名为ApplicationContext.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-3.2.xsd">
</beans>
4创建bean
以上面的工程举例:
ApplicationContext.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-3.2.xsd">
<!-- 创建bean -->
<bean id="userDao" class="com.rl.spring.dao.impl.UserDaoImpl"></bean>
</beans>
测试代码:
package com.rl.spring.service;
import org.junit.jupiter.api.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.rl.spring.dao.UserDao;
class UserServiceTest {
@Test
void testSave() {
//初始化Spring容器
ApplicationContext ctx = new ClassPathXmlApplicationContext("classpath:ApplicationContext.xml");
//获取bean
UserDao userDao = (UserDao) ctx.getBean("userDao");
//调用
userDao.save();
}
}
输出:
user被保存了!
bean的创建方式:
1 使用构造器的方式创建(90%使用这种方式创建bean)
上面的方式创建bean就是使用类的默认构造器的方式创建的, 如果没有默认构造器的话是无法直接这样创建的
2 静态工厂方式创建
User类:
package com.rl.spring.model;
public class User {
private Integer userId;
private String username;
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
静态工厂类:
package com.rl.spring.factory;
import com.rl.spring.model.User;
public class FactoryBean {
/**
* 必须是静态方法
* @return
*/
public static User createUser(){
return new User();
}
}
ApplicationContext.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-3.2.xsd">
<bean id="user" class="com.rl.spring.factory.FactoryBean"
factory-method="createUser"></bean>
</beans>
测试代码:
package com.rl.spring.test;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.rl.spring.dao.UserDao;
import com.rl.spring.model.User;
public class TestSpring {
@Test
public void test() {
ApplicationContext ctx =
new ClassPathXmlApplicationContext("ApplicationContext.xml");
User user = (User) ctx.getBean("user");
System.out.println(user);
}
}
输出:
com.rl.spring.model.User@b1ffe6
3实例工厂方式创建
User类:
package com.rl.spring.factory;
import com.rl.spring.model.User;
public class FactoryBean1 {
public User createUser(){
return new User();
}
}
配置文件:
<?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-3.2.xsd">
<!-- 通过Spring来定义实例工厂 -->
<bean id="factoryBean" class="com.rl.spring.factory.FactoryBean1"></bean>
<!-- 指定要创建的bean
factory-bean:指定实例工厂类,
factory-method:工厂的创建bean的方法
-->
<bean id="user" factory-bean="factoryBean" factory-method="createUser"></bean>
</beans>
工厂类:
package com.rl.spring.factory;
import com.rl.spring.model.User;
public class FactoryBean1 {
/**
* 不需要static
* @return
*/
public User createUser(){
return new User();
}
}
测试代码:
package com.rl.spring.test;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.rl.spring.model.User;
public class TestSpring {
@Test
public void test() {
ApplicationContext ctx =
new ClassPathXmlApplicationContext(new String[]{"ApplicationContext.xml"});
User user = (User) ctx.getBean("user");
System.out.println(user);
}
}
输出:
com.rl.spring.model.User@173f6d9