spring学习随笔3

本文内容包括

<!--1.Bean的生命周期-->

<!--2.Bean的后置处理器-->

<!--3.静态工厂方法配置bean-->

<!--4.实例工厂方法配置bean-->

<!--5.通过factorybean配置bean-->

<!--6.自动扫描配置bean-->

 

配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:util="http://www.springframework.org/schema/util"
	xmlns:p="http://www.springframework.org/schema/p" 
    xsi:schemaLocation="
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd  
    http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.2.xsd
	http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd  
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd">
    
    <!--1.Bean的生命周期-->
	<bean id="person" class="com.liu.lesson3.Person" p:name="liu" init-method="init" destroy-method="destroy"></bean>
	<!--2.Bean的后置处理器-->
	<bean class="com.liu.lesson3.MyProcessor"></bean>
	<!--3.静态工厂方法配置bean-->
	<bean id="person2" class="com.liu.lesson3.StaticPersonFactory" factory-method="getPerson">
		<constructor-arg value="liu"></constructor-arg>
	</bean>
	<!--4.实例工厂方法配置bean-->
	<bean id="factory" class="com.liu.lesson3.InstancePersonFactory"></bean>
	<bean id="person3" factory-bean="factory" factory-method="getPerson">
		<constructor-arg value="liu2"></constructor-arg>
	</bean>
	<!--5.通过factorybean配置bean-->
	<bean id="person4" class="com.liu.lesson3.MyFactoryBean">
	</bean>
	<!--6.自动扫描配置bean-->
	<context:component-scan base-package="com.liu.lesson3" />
 </beans>


InstancePersonFactory

package com.liu.lesson3;

import java.util.HashMap;

public class InstancePersonFactory {
	private HashMap<String,Person> persons = new HashMap<String,Person>();
	
	public InstancePersonFactory(){
		persons.put("liu2", new Person("liu2"));
		persons.put("zhang2", new Person("zhang2"));
	}
	
	public Person getPerson(String name){
		return persons.get(name);
	}
}


MyFactoryBean

package com.liu.lesson3;

import org.springframework.beans.factory.FactoryBean;

public class MyFactoryBean implements FactoryBean<Person2> {

	@Override
	public Person2 getObject() throws Exception {
		// TODO Auto-generated method stub
		return new Person2("test");
	}

	@Override
	public Class<?> getObjectType() {
		// TODO Auto-generated method stub
		return Person2.class;
	}

	@Override
	public boolean isSingleton() {
		// TODO Auto-generated method stub
		return true;
	}

}


MyProcessor

package com.liu.lesson3;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;

public class MyProcessor implements BeanPostProcessor {

	@Override
	public Object postProcessAfterInitialization(Object arg0, String arg1) throws BeansException {
		// TODO Auto-generated method stub
		if("person3".equals(arg1)){
			System.out.println("postProcessAfterInitialization:"+arg0+","+arg1);
		}		
		return arg0;
	}

	@Override
	public Object postProcessBeforeInitialization(Object arg0, String arg1) throws BeansException {
		// TODO Auto-generated method stub
		if("person3".equals(arg1)){
			System.out.println("postProcessAfterInitialization:"+arg0+","+arg1);
		}
		return arg0;
	}

}


 

Person

package com.liu.lesson3;

public class Person {
	private String name;
	
	public Person() {
		System.out.println("Constructor");
	}
	
	public Person(String name) {
		this.name = name;
	}
	
	public void setName(String name) {
		System.out.println("setName");
		this.name = name;
	}
	
	public void init(){
		System.out.println("init");
	}
	
	public void destroy(){
		System.out.println("destroy");
	}

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


 

Person2

package com.liu.lesson3;

public class Person2 {
	private String name;
	
	public Person2() {
		System.out.println("Constructor");
	}
	
	public Person2(String name) {
		this.name = name;
	}
	
	public void setName(String name) {
		System.out.println("setName");
		this.name = name;
	}
	
	public void init(){
		System.out.println("init");
	}
	
	public void destroy(){
		System.out.println("destroy");
	}

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


StaticPersonFactory

package com.liu.lesson3;

import java.util.HashMap;

public class StaticPersonFactory {
	private static HashMap<String,Person> persons = new HashMap<String,Person>();
	
	static{
		persons.put("liu", new Person("liu"));
		persons.put("zhang", new Person("zhang"));
	}
	
	public static Person getPerson(String name){
		return persons.get(name);
	}
}


 

Test

package com.liu.lesson3;

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

import com.liu.lesson3.controller.UserController;

public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ApplicationContext cxt = new ClassPathXmlApplicationContext("Lesson3.xml");
		Person person = (Person) cxt.getBean("person");
		
		Person person2 = (Person) cxt.getBean("person2");
		
		System.out.println("person2:"+person2);
		
		Person person3 = (Person) cxt.getBean("person3");
		
		System.out.println("person3:"+person3);
		
		Person2 person4 = (Person2) cxt.getBean("person4");
		
		System.out.println("person4:"+person4);
		
		//Controller execute
		UserController userController = (UserController)cxt.getBean("userController");
		userController.execute();
	}

}


UserCompnent

package com.liu.lesson3.compnent;

import org.springframework.stereotype.Component;

@Component
public class UserCompnent {

}


UserController

package com.liu.lesson3.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;

import com.liu.lesson3.service.IUserService;

@Controller
public class UserController {
	
	@Autowired
	IUserService userService;
	
	public void execute(){
		System.out.println("execute");
		userService.addUser();
	}
}


IUserDAO

package com.liu.lesson3.dao;

public interface IUserDAO {
	public void add();
}


UserDAO

package com.liu.lesson3.dao;

import org.springframework.stereotype.Repository;

@Repository
public class UserDAO implements IUserDAO {

	@Override
	public void add() {
		System.out.println("add");
		
	}

}


IUserService

package com.liu.lesson3.service;

public interface IUserService {
	public void addUser();
}


UserService

package com.liu.lesson3.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.liu.lesson3.dao.IUserDAO;

@Service
public class UserService implements IUserService {

	@Autowired
	private IUserDAO userDAO;
	
	@Override
	public void addUser() {
		// TODO Auto-generated method stub
		System.out.println("addUser");
		userDAO.add();
	}

}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值