Spring框架简介③

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

猜你喜欢

转载自blog.csdn.net/ip_JL/article/details/81474336