本文内容包括
<!--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();
}
}