Spring简单实现(新手版)

所有的配置文件都必须在src的目录下

<1--包扫描 -->
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">
	<context:component-scan base-package="tolkits"></context:component-scan>
</beans>

<!--利用P方法进行属性配置xml-->
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p="http://www.springframework.org/schema/p"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd">

JDBC的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"
	xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd">


	<!-- 属性注入,set注入 -->
	<bean id="userAction" class="Jdbc.UserAction">
		<property name="userService" ref="userService"></property>
	</bean>

	<bean id="userService" class="Jdbc.UserService">
		<property name="userDao" ref="userDao"></property>
	</bean>

	<bean id="userDao" class="Jdbc.UserDao"></bean>

	<!-- 属性注入的优化 -->
	<bean id="userAction1" class="Jdbc.UserAction"
		p:userService-ref="userService1">
	</bean>

	<bean id="userService1" class="Jdbc.UserService"
		p:userDao-ref="userDao1">
	</bean>

	<bean id="userDao1" class="Jdbc.UserDao"></bean>

	<!-- 自动装配 ,不推荐使用 -->
	<bean id="userAction2" class="Jdbc.UserAction" autowire="byName">
	</bean>

	<bean id="userService2" class="Jdbc.UserService" autowire="byName">
	</bean>

	<bean id="userDao2" class="Jdbc.UserDao"></bean>

</beans>

	<!-- 内部bean -->
	<bean id="action2" class="com.spring.demon_02.studentAction">
		<property name="Studentservice">
			<bean class="com.spring.demon_02.studentService">
				<property name="Studentdao">
					<bean class="com.spring.demon_02.studentDao"></bean>
				</property>
			</bean>
		</property>
	</bean>

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也相当于实例化一个类 -->

	<!-- 1.调用无参构造 -->
	<bean id="student" class="First.student" scope="prototype"
		lazy-init="true" init-method="init_student"
		destroy-method="destroy_student"></bean>
	<!-- 2.有参构造 -->
	<bean id="student1" class="First.student" lazy-init="true"
		scope="singleton" init-method="init_student"
		destroy-method="destroy_student">
		<constructor-arg value="1" index="0"></constructor-arg>
		<constructor-arg value="A" index="1"></constructor-arg>
	</bean>

	<!-- 3.有参构造 引用其他对象 -->
	<bean id="s" class="java.lang.String" lazy-init="true"
		scope="singleton">
		<constructor-arg value="CCC"></constructor-arg>
	</bean>

	<bean id="student3" class="First.student" lazy-init="true"
		scope="singleton" init-method="init_student"
		destroy-method="destroy_student">
		<constructor-arg value="1" index="0"></constructor-arg>
		<constructor-arg index="1" ref="s"></constructor-arg>
	</bean>

	<!-- 4.利用工厂模式创建对象 -->
	<!-- 实例化一个工厂类 -->
	<bean id="usefactory" class="com.spring.demon_01.StudentFactory"></bean>
	<!-- 利用工厂去实例化一个类 -->
	<bean id="student4" factory-bean="usefactory"
		factory-method="getInstance" lazy-init="true"></bean>
	<!-- 5,利用 静态方法创建(工厂类) -->
	<bean id="student5" class="com.spring.demon_01.StudentFactory"
		factory-method="getStaticInstance"></bean>
		
	<!-- set属性注入 -->
	<bean id="Instance01" class="Com.Sprinng._12_27.Instance"
		scope="prototype" lazy-init="true" init-method="print"
		destroy-method="print1">
		<property name="id" value="103"></property>
	</bean>
	
	<!-- 新方法set进行属性注入 -->
	<bean id="instance02" class="Com.Sprinng._12_27.Instance" p:id="103"></bean>
</beans>

marven所需依赖文件

		<!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-beans</artifactId>
			<version>5.1.2.RELEASE</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>5.1.2.RELEASE</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
			<version>5.1.2.RELEASE</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.springframework/spring-expression -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-expression</artifactId>
			<version>5.1.2.RELEASE</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/javax.annotation/javax.annotation-api -->
		<dependency>
			<groupId>javax.annotation</groupId>
			<artifactId>javax.annotation-api</artifactId>
			<version>1.3.2</version>
		</dependency>

Student实现类

package First;
public class student {
	private int id;
	private String name;

	public student(int id, String name) {
		super();
		this.id = id;
		this.name = name;
		System.out.println("有参构造");
	}

	public student() {
		System.out.println("无参构造");
		// TODO Auto-generated constructor stub
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public void init_student() {
		System.out.println("类的开始");
	}

	public void destroy_student() {
		System.out.println("类的结束");
	}

	@Override
	public String toString() {
		return "student [id=" + id + ", name=" + name + "]";
	}

}

工厂方法构造–可选

package com.spring.demon_01;

import First.student;

public class StudentFactory {
	public student getInstance() {
		return new student(123, "ABC");
	}

	public static student getStaticInstance() {
		return new student(234, "BCD");
	}
}

Main方法实现(App)

package com.spring.demon_01;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import First.student;

/**
 * scope="singleton":默认单个对象 scope="prototype":多个对象 lazy-init="default"
 *
 */
public class App2 {
	public static void main(String[] args) {
		//1
		ApplicationContext applicationcontext = new ClassPathXmlApplicationContext("bean.xml");


		//2
		Resource resource = new ClassPathResource("bean.xml");
		BeanFactory fa = new DefaultListableBeanFactory();
		BeanDefinitionReader bdr = new XmlBeanDefinitionReader((BeanDefinitionRegistry) fa);
		bdr.loadBeanDefinitions(resource);

		System.out.println("----------------IOC---------------------");
		student stu = (student) applicationcontext.getBean("student5");
		System.out.println(stu);
		((AbstractApplicationContext) applicationcontext).close();
	}
}

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值