栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring Bean装载方式代码实例解析

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring Bean装载方式代码实例解析

这篇文章主要介绍了Spring Bean装载方式代码实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

Bean的装配方式

Bean的装配可以理解为依赖关系注入

基于XML的装配

  a) 设值注入

i.要求:

  • Bean 类必须提供一个默认的无参构造方法。
  • Bean 类必须为需要注入的属性提供对应的setter方法。

  b) 构造注入

package com.itheima.assemble;
 
import java.util.List;
 
public class User {
  private String username;
  private Integer password;
  private List List;
  
  public User(String username,Integer password,List List){
    super();
    this.username = username;
    this.password = password;
    this.List = List;
  }
  
  public User(){
     
  }
  public void setUsername(String username) {
    this.username = username;
  }
  public void setPassword(Integer password) {
    this.password = password;
  }
  public void setList(List list) {
    List = list;
  }
  @Override
  
  public String toString() {
    return "User [username=" + username + ", password=" + password + ", List=" + List + "]";
  }
}







  
  "constructorvalue1"
  "constructorvalue2"
  




  
  
  
  
    
      "setlistvalue1"
      "setlistvalue2"
    
  

元素用于定义构造方法的参数,子元素来为Use r 类中对应的list集合属性注入值。

其中元素用于调用Bean实例中的setter方法完成属性赋值,从而完成依赖注入。

package com.itheima.assemble;
 
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
 
public class XmlBeanAssembleTest {
  public static void main(String[] args) {
    //定义配置文件路径
    String xmlPath = "com/itheima/assemble/beans5.xml";
    //加载配置文件
    ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);
    //构造方式输出结果
    System.out.println("构造方式:");
    System.out.println(applicationContext.getBean("user1"));
    //设值方式输出结果
    System.out.println("设值方式:");
    System.out.println(applicationContext.getBean("user2"));
  }
}

2.基于Annotation的装配

package com.itheima.annotation;
 
public interface UserDao {
  public void save();
}
package com.itheima.annotation;
 
import org.springframework.stereotype.Repository;
 
@Repository("userDao")
public class UserDaoImpl implements UserDao{
  public void save(){
    System.out.println("userdao...save...");
  }
}

先使用@Repository 注解将UserDaolmpl 类标识为Spring 中的Bean,其写法相当于配置文件中

package com.itheima.annotation;
 
public interface UserService {
  public void save();
}
package com.itheima.annotation;
 
import javax.annotation.Resource;
 
import org.springframework.stereotype.Service;
 
@Service("userService")
public class UserServiceImpl implements UserService{
  @Resource(name="userDao")
  private UserDao userDao;
  @Override
  public void save() {
    // TODO Auto-generated method stub
    //调用userDao中的save()方法
    this.userDao.save();
    System.out.println("userservice...save...");
  }
  public void setUserDao(UserDao userDao) {
    this.userDao = userDao;
  }
   
}

@Service 注解将UserServicelmpl 类标识为Spring中的Bean,这相当于配置文件中 package com.itheima.annotation; import javax.annotation.Resource; import org.springframework.stereotype.Controller; @Controller("userController") public class UserController { @Resource(name="userService") private UserService userService; public void save(){ this.userService.save(); System.out.println("userControlle...save..."); } public void setUserService(UserService userService) { this.userService = userService; } }

Controller 注解标注了UserController 类,这相当于在配置文件中编写; 然后使用了@Resource 注解标注在userService 属性上,这相当于在配置文件中编写


 



 
package com.itheima.annotation;
 
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
 
public class AnnotationAssembleTest {
  public static void main(String[] args) {
    String xmlPath = "com/itheima/annotation/beans6.xml";
    ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);
    //获取UserController实例
    UserController userController = (UserController)applicationContext.getBean("userController");
    //调用UserController中的save()方法
    userController.save();
  }
}

3.自动装配


 





增加了autowire 属性,并将其属性值设置为byName 。在默认情况下,配置文件中需要通过ref 来装配Bean ,但设置了autowire=" byName"后,Spring 会自动寻找userServiceBean 中的属性,并将其属性名称与配置文件中定义的Bean 做匹配。由于UserServicelmpl 中定义了userDao 属'性及其setter 方法,这与配置文件中id 为userDao 的Bean 相匹配,所以Spring会自动地将id 为userDao 的Bean 装配到id 为userService 的Bean 中。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/135272.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号