Spring框架知识要点总结(第一天)

1.IOC容器创建的2种方式

//首先在applicationContext.xml配置文件中写


//创建方式一:
//Spring把所有的配置文件都当做资源
		ClassPathResource resource = new ClassPathResource("applicationContext.xml");
		BeanFactory	beanFactory = new XmlBeanFactory(resource);
		beanFactory.getBean("user");

//创建方式二:
ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
		ac.getBean("user");//这里AppicationContext是BeanFactory下的接口

2.Bean配置的详解

//User类
package c_ioc_bean;

public class user {
	private String id;
	private String name;
	
	public user() {
		System.out.println("user.user()");
	}
	public void init(){
		System.out.println("user.init()");
	}
	public void destroy(){
		System.out.println("user.enclosing_method()");
	}
}


	

3.spring IOC容器详解

3.1 IOC容器创建对象

3.1.1通过无参构造方法创建对象

	   
           

3.1.2通过带参数的构造方法创建对象

  	   
           
           	
           
           
           
           
           		
           		
           

3.1.3通过工厂类创建对象

	public class Factory {//工厂类
		public static String getStaticInstance(){//静态方法
			return new String("factory_static");
		}
		public String getInstance(){ //非静态方法
			return new String("factory_no_static");
		}
	}

3.1.3.1通过工厂类的静态方法创建对象

		
           	

3.1.3.2通过工厂类的非静态方法创建对象 

		
           
           


3.2处理对象依赖关系

何为处理对的依赖关系?何为依赖注入(DI)?
依赖注入就是用来处理对象依赖关系,通俗点就是给对象的属性赋值

3.2.1通过set方式

//javaBean
package e_di;

import java.util.List;
import java.util.Map;
import java.util.Properties;

public class user {
	private int id;
	private String name;
	
	private List list;
	private Mapmap;
	private Properties prop;
	public user() {
		System.out.println("user.user()");
	}
	
	public user(int id, String name) {
		super();
		this.id = id;
		this.name = name;
	}
	
	public void setId(int id) {
		this.id = id;
	}
	public void setName(String name) {
		this.name = name;
	}
	public void setList(List list) {
		this.list = list;
	}
	public void setMap(Map map) {
		this.map = map;
	}
	public void setProp(Properties prop) {
		this.prop = prop;
	}
	public void init(){
		System.out.println("user.init()");
	}
	public void destroy(){
		System.out.println("user.enclosing_method()");
	}

	@Override
	public String toString() {
		return "user [id=" + id + ", name=" + name + ", list=" + list + ", map=" + map + ", prop=" + prop + "]";
	}

	
}

 
            
             
             	
             	
             
             
             
              
              	
              	
              
              
              
               
               	
               		
               			中国
               			美国
               			日本
               		
               	
               
               
               
               	
               		
               			
               			
               		
               	
               
               
                
               	
               		
               			中国
               			美国
               		
               	
               



3.2.2内部bean的方式

//内部Bean就是set方式简化版。但是因为是通过bean的内部嵌套定义的,所以缺点是只能一次性使用。 当还需要在其他处使用内部的这些bean时,还需要重新定义

           
           
           		
           			
           				
           					
           				
           			
           		
           

3.2.3p名称空间注入

//P名称空间
1.首先要在xml文件顶部的中引入p名称空间 xmlns:p="http://www.springframework.org/schema/p"
然后
2.再按如下方式写配置
 
               
	           
	           


3.2.4自动装载

 
	         
	          
	          
	           
		     
     
 
     
 
     
 
    

        3.2.5注解

总结:可以简化配置!
@Component   把对象加入ioc容器,对象引用名称是类名,第一个字母小写
@Component(“name”) 把指定名称的对象,加入ioc容器

@Repository 同@Component , 主要用于标识加入容器的对象是一个持久层的组件(类)
@Service   同@Component , 主要用于标识加入容器的对象是一个业务逻辑层的组件
@Controller 同@Component , 主要用于标识加入容器的对象是一个控制层的组件

@Resource 注入属性(DI),  会从容器中找对象注入到@Resource修饰的对象上!



    
    
    
	    
   
     


@Repository
public class UserDao implements IUserDao {

	@Override
	public void save() {
		System.out.println("UserDao.save(), annotation");
	}
}


@Service
public class UserService implements IUserService {

	@Resource		// 根据下面属性名称,去容器里面找对应的对象, 找到后注入进来
	private IUserDao userDao;
	
	@Override
	public void save() {
		userDao.save();
	}
}


@Controller
@Scope("prototype")   // 指定为多例, 默认为singleton
public class UserAction {

	@Resource
	private IUserService userService;
	
	
	public String execute() {
		userService.save();
		return "success";
	}
}

注解与配置的各自优点:

         注解,简化配置,开发快捷高效!

         配置,开发繁琐、配置麻烦,容易维护!




转载于:https://www.cnblogs.com/chenny3/p/10226218.html

你可能感兴趣的:(java)