博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring_3最小化Spring XML配置
阅读量:6904 次
发布时间:2019-06-27

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

一、最小化xml配置

我们使用<bean>标签定义bean以及使用<constructor-arg>或者<property>装配bean。对于少量的bean的应用来说很好,但是随着应用的发展,我们不得不编写越来越复杂的xml。

然而,spring提供了减少xml的配置的方法。
自动检测(autodiscovery),自动识别哪些类要装配成bean,减少<bean>标签的使用。
自动装配(autowiring),自动装配bean的属性。减少<property><constructor-arg>标签的使用

二、自动装配bean

自动装配的作用:不用为所有属性赋值。

只能为bean的引用类型成员变量自动装配,不能为bean的基本类型成员变量自动装配。

1. 实现自动装配的方式
  • 通过配置xml
  • 通过注解。
2. 自动装配引用类型成员变量的实现策略
  • xml文件方式,是在xml文件中找相同类的不同id的bean的属性装配到该bean的属性中。
  • 注解方式,则在xml文件找到一个引用对象的bean装配到该引用变量属性中。注解方式的方式,在类中不需要为该引用变量提供set方法。
3. 具体实现
  • 通过配置xml自动装配bean
    通过设置autowire属性,其中有4种类型的自动装配策略,byName、byType、constructor、autodetect。
    byName:把与bean的属性具有相同名字的其他bean自动装配到bean的对应属性中。
    例如,
//自动装配,不需要为car属性赋值
  • 通过注解自动装配bean
    在xml文件中声明启用注解装配<context:annotation-config />
    在javabean类中相应属性上添加注解,spring支持的自动装配注解@Autowired、@Inject、@Resource。
    例如,
    1).javabean类添加注解
public class User {    private String name;    @Autowired(required=false)    private Car car;      ...相应的set、get方法...}

2).配置xml文件

//启用注解装配
//注解自动装配bean的Car属性,在声明bean的时候不需要为Car属性赋值
4. 可选的自动装配

如果没有匹配的bean,或者存在多个匹配的bean,@Autowired注解会出NoSuchBeanDefinitionException异常

可以通过设置注解的required属性为false配置自动装配是可选的,如果没有匹配的bean会自动为属性设置为null。

三、自动检测Bean

1.基本知识

通过xml配置<context:component-scan>,spring会自动检测添加了自动检测注解的类。还会启动自动装配的。不需要<context:annotation-config>。自动的为该类创建bean。常用的注解:@Component、@Controller、@Repository、@Service

2. 使用场景

自动检测即可以为你自动生成bean,也可以自动装配。适用于service层调用dao层,如:

UserService调用UserDao层的方法时,UserService类有的成员变量UserDao对象。就可以自动检测Userservice类,自动装配userDao对象。不需要在UserService类中new UserDao,只需声明就行。

3. 具体实现

例如,

1).配置xml文件
<context:componet-scan base-package="" />
2).标注要自动检测的类

@Componentpublic class UserService{    @Autowired    UserDao userDao ;    public void add(){        userDao.add();    }}

自动将UserService类注册为Spring Bean ,Bean的id默认为第一个字母小写的类名即为userService。

也可以显示的自定义bean的id,即@Component("myService")。
自动装配了userDao。

四、使用Spring基于java的配置

通过定义一个配置类来代替xml文件,在java类中配置bean代替在xml中配置bean

1).xml的配置

<context:componet-scan base-package="" />
2).定义一个配置类

@configurationpublic class SpringConfig{    @Bean    public Car duke(){        Car car = new Car();        car.setBrand("baoma");        car.setPrice(12000);        return car;    }}

转载于:https://www.cnblogs.com/TaogenJia/p/5468632.html

你可能感兴趣的文章
mysql 登录权限
查看>>
Java之内部类
查看>>
怎样使用python帮助手册
查看>>
我的友情链接
查看>>
UITabelView的分割线处理及介绍
查看>>
Spring整合MyBatis
查看>>
打印机拒绝访问无法连接
查看>>
Linux学习路线图
查看>>
Linux系统下常见性能分析工具的使用
查看>>
事件驱动模型
查看>>
ASP.NET MVC 音乐商店 - 3. 视图与模型
查看>>
mcollective安装文档
查看>>
GRE隧道模式与IPSec传输模式构建×××
查看>>
linux命令6--touch命令
查看>>
我的友情链接
查看>>
且谈布局适配和日志框架
查看>>
在论坛中出现的比较难的sql问题:15(行转列2)
查看>>
springboot中的5种通知小例子
查看>>
mysql数据通过jdbc操作作为Spark数据源案例
查看>>
Sersync实现触发式文件同步
查看>>