博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring 基于xml装配bean和使用注解实现依赖注入
阅读量:3904 次
发布时间:2019-05-23

本文共 4320 字,大约阅读时间需要 14 分钟。

文章目录

基于xml装配bean

实例化方式

1. 默认构造

格式:

实体类:

public class UserServiceImpl  implements UserSevice{
@Override public void addUser() {
System.out.println("Adding!!"); }}

示例:

// xml
// classpublic class UserServiceImpl implements UserSevice{
@Override public void addUser() {
System.out.println("Adding!!"); }}// testApplicationContext applicationContext = new ClassPathXmlApplicationContext("com/zamao/inter/applicationContext.xml");UserServiceImpl userService = applicationContext.getBean("userServiceImpl",UserServiceImpl.class);userService.addUser();

2. 静态工厂

格式:

实体类:

public class UserServiceImpl  implements StaticuserSevice {
@Override public void addUser() {
System.out.println("Adding!! static Factory"); }}

工厂类:

public class Factory {
//静态方法生产bean public static StaticuserSevice createUserService () {
return new UserServiceImpl(); }}

xml:

测试:

ApplicationContext applicationContext = new ClassPathXmlApplicationContext            ("com/zamao/staticfactory/applicationContext.xml");StaticuserSevice userSevice =applicationContext.getBean("userServiceImpl",StaticuserSevice.class);userSevice.addUser();

3. 实例工厂

格式:

实体类:

public class SimpleuserServiceImpl implements  SimpleuserSevice{
@Override public void addUser() {
System.out.println("Adding!! simple Factory"); }}

工厂类:

public class Factory {
// 普通方法生产bean public SimpleuserServiceImpl createUserService () {
return new SimpleuserServiceImpl(); }}

xml:

测试:

ApplicationContext applicationContext = new ClassPathXmlApplicationContext            ("com/zamao/simplefactory/applicationContext.xml");SimpleuserSevice simpleuserSevice =applicationContext.getBean("simpleUserServiceImpl", SimpleuserSevice.class);simpleuserSevice.addUser();

属性注入

1. 构造方法注入

实体类:

public class User {
String name; Integer age; Address address; public User(String name, Integer age, Address address) {
this.name = name; this.age = age; this.address = address; } @Override public String toString() {
return "User{" + "name='" + name + '\'' + ", age=" + age + ", address=" + address + '}'; }}
public class Address {
String name; public Address(String name) {
this.name = name; } @Override public String toString() {
return "Address{" + "name='" + name + '\'' + '}'; }}

xml:

测试:

ApplicationContext applicationContext = new ClassPathXmlApplicationContext("com/zamao/constructor/applicationContext.xml");User user =  applicationContext.getBean("user",User.class);System.out.println(user.toString());

2. setter 方法注入

格式:

实体类与上面相同,只不过将构造方法换成了setter方法

xml:

3. p 命名空间

格式:

p 命名空间: 简化property 
注意声明命名空间

xml:

// 声明p命名空间xmlns:p="http://www.springframework.org/schema/p"

基于注解实现依赖注入

注解 : 就是一个类,使用@注解名称

开发中,使用注解取代xml配置文件

@Component 取代< bean class="">

@Component(“id”) 取代< bean id="" class="">

web 开发,提供3个@Component 注解衍生注解

@Repository: dao 层@ Service : service 层@ Controller : web 层

注入的方式如下:

普通值 : @Value("");

引用值 :

  • 方式1:按照[类型]注入:

    • @Autowired
  • 方式2: 按照[名称]注入

    • @Autowired

      @Qualifier(“名称”)

    • @Resource(“名称”)

注意:

通过注解装配bean需要在xml文件中配置需要扫描的包。
在xml中添加如下代码:

这里通过基于注解装配bean实现三层架构来进行举例

Dao 层:

@Repository("userDaoImpl")public class UserDaoImpl implements UserDao{
@Override public void saveUser() {
System.out.println("Save"); }}

Service层:

@Servicepublic class UserServiceImpl implements UserSevice {
UserDao userDao; @Autowired @Qualifier("userDaoImpl") public void setUserDao(UserDao userDao) {
this.userDao = userDao; } @Override public void addUser() {
userDao.saveUser(); }}

Controller层:

@Controller("userControllerImpl")public class UserControllerImpl implements UserController {
@Autowired UserSevice userSevice; @Value("jacw") String name; @Override public void insertUser() {
userSevice.addUser(); } public String toString() {
return name; }}

Service层通过按照[名称]的方式注入Dao,Controller通过按照[类型]的方式注入Service。

转载地址:http://vdaen.baihongyu.com/

你可能感兴趣的文章
eclipse运行时弹出提示java was started but returned exit code=13
查看>>
MATLAB鼠标选取ROC区域
查看>>
MFC按键控制
查看>>
google play app下载方法测试
查看>>
STM32利用FATFS读写数组
查看>>
Altium_Designer如何快速寻找元件和封装
查看>>
PCB各层介绍和AltiumDesigner画PCB时的规则设置
查看>>
char*,const char*和string 三者转换
查看>>
[PADS经验] 【图文并茂】教你如何使用Altium Designer画封装
查看>>
Altium Designer 教程
查看>>
字符串与数字转换方法
查看>>
利用Inoreader跟踪ScienceDirect最新文献教程
查看>>
VS2010/MFC编程入门之二十七(常用控件:图片控件Picture Control)
查看>>
STM32下SPI模式通过MAX7219驱动8位数码管显示模块
查看>>
目标检测的图像特征提取之(一)HOG特征
查看>>
web前端开发分享-css,js工具篇
查看>>
jQuery 学习笔记(未完待续)
查看>>
如何用万用表检测MOS管是好是坏?
查看>>
LabWindows/CVI入门之第一章:LabWindows/CVI开发环境
查看>>
LabWindows/CVI入门之第二章:GUI开发
查看>>