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