Spring Bean定义

本文内容纲要:Spring Bean定义

一、声明Bean的几种方式

1、xml 配置

2、配置类中定义

3、注解定义@Componet(@Controller @Service @Repository)

4、import导入

${}获取外部资源文件中的值

#{}:el表达式

二、自动注入方式

1、setter属性注入

2、构造器注入

xml中自动装配原理:autowire的值

a、byType:根据类型去自动匹配 当出现多个类型或者未匹配到类型则会报错(默认)

b、byName:根据set方法的名字去自动匹配

c、constructor:根据构造器去匹配

优先根据参数名字去匹配,假如参数名字未匹配到,则根据参数类型去匹配,如果类型出现多个,会注入失败

根据构造器的参数进行完整匹配,如果IOC容器中定义的Bean,不满足构造器中的参数类型及个数,则注入失败

<context:component-scan base-package="">

<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"></context:exclude-filter>

</context:component-scan>

use-default-filters 默认为true,默认扫描@Controller,@Service,@Repository,@Componet等注解

1、排除扫描选项:<context:exclude-filter type="" expression=""></context:exclude-filter>

2、包含扫描选项:<context:include-filter type="" expression=""></context:include-filter>

type值类型:

a、annotation 默认值 根据注解的完整限定名设置排除/包含

b、assignable 根据类的完整限定名设置排除/包含

引用外部资源文件

<context:property-placeholder location="db.properties"></context:property-placeholder>

@Autowired的自动注入

默认优先根据类型进行匹配

如果根据类型匹配到多个则根据名字进行匹配,

如果根据名字(实现类的类名)没有匹配到则报错

处理方式:

a、可以修改属性的名字对应bean的名字,userServiceImpl

@Autowired

private UserService userServiceImpl;

b、可以去修改Bean注册到IOC容器的名字,@Service("userService")

@Autowired

private UserService userServiceImpl;

c、可以通过@Qualifier设置获取属性的名字,@Qualifier("userServiceImpl")

@Autowired

@Qualifier("userServiceImpl")

private UserService userService;

三、java类配置IOC的Bean实例

1、配置类上加

a、@Configuration:用于标记一个spring配置类,相当于spring配置Bean实例的xml文件

b、@ComponetScan(basePachages="cn.com.landiss"):相当于<context:component-scan base-package="cn.com.landiss">

c、@PropertySource("db.properties"):引入外部资源文件,

可以通过如下方式获取值:

@Value("${mysql.username}")

private String username;

@Value("${mysql.password}")

private String password;

@Value("${mysql.url}")

private String url;

@Value("${mysql.driverClass}")

private String driverClass;

d、@Import:

1)导入其他的配置类。选用

2)将引入的类配置为一个bean实例

2、声明Bean的方式

即在类中定义方法,如下:

public UserService userService(){

return new UserService();

}

返回类型未需要注册的到IOC中的类型,方法名相当于xml中定义的Bean ID

3、bean属性注入方式

a、注入外部bean实例,通过定义方法参数获取要注入的属性值

b、注入内部bean实例,在配置内中直接调用定义的方法即可

注:内部与外部是针对当前的配置类

本文内容总结:Spring Bean定义

原文链接:https://www.cnblogs.com/landiss/p/14501260.html

以上是 Spring Bean定义 的全部内容, 来源链接: utcz.com/z/362358.html

回到顶部