个人学习-java-spring

来源:互联网 发布:金尚网上商城项目源码 编辑:程序博客网 时间:2024/05/22 00:07

通过注解的方式配置bean

@Componet 基本标识的注解.受spring管理的组件

@Respository: 持久层的组件. 

@Service: 业务层的组件

@Controller : 表现层的组件


在Spring中,需要加上context的声明,并且配置<context:component-scan base-packge='类路径'>

base-packge指扫面某个路径下所有的类包包括子类的包

resource-pattern 指的是 过滤某个路径下的特定的类  写法:"xxx/*class" 意思是基于base-packge路径下的 xxx特定的包名内所有的类


<context:include-filter> 表示子节点要包含的目标类  使用时候要注意.<context:component-scan>中要设置use-default-filter配合使用设置为true

<context:exclude-filter> 表示子节点要排除在外的目标类


bean之间的关联关系处理

比如说controller下的会存在有service的类的引用 并且调用service中的方法



在service中引用持久层 Repository 



这里的关联关系是不完善的在spring中

(带有@Autowired ,@Resource,@Inject 会自动装配)

1.需要在引用其他的类的上方加上@Autowired 会自动装上兼容类型的bean类


2.如果引用的bean不加载到ioc容器内,那么就不能自动装配 

就是该bean的上方没有加入 

@Componet 

@Respository: 

@Service:

@Controller :

那么就是没有加载到ioc容器内,

所以不能互相引用   如果某个bea没有加入ioc容器中,但是在bean中已经引用该类,可以设置@Autowired(required=false) 这样也不会加载到类中

3.如果某个bean 要装载的类存在多个适配的情况的话(某一个接口被多个类引用)

第一种方式:需要在@Respository的类 或者其他中加入@Respository("名字")之中的名字和@service中的方法的名字属性一样就行

第二种方式: 不在类的上方写入与属性名相同名字.而是在指定的方法上面写入@service中的@Autowired引用的方法下方@Qualifier("xxxx"); xxxx代表的是引用的bean的名字

                     @Qualifier("xxxx")也可以加入到参数列表中public void setxxx(@Qualifier("xxxx") xxx xxxx)这种形式


0 0
原创粉丝点击