15 spring给DAO SERVICE SERVLET注解

1
2
3
4
5
6
<!--Spring有四个注解:
都能把组件添加到IOC的容器管理中
@Controller(推荐给控制器层组件加这个(Servlet))
@Service:业务逻辑,推荐给业务逻辑层组件添加这个注解
@Repository:仓库,给数据库层(DAO层,持久化层)添加这个注解
@Component:组件层,给不属于上述三层的添加这个注解,-->

使用注解将组建快速加到容器中,需要几步:

  1. 给要天天加的组件上标四个注解的任何一个

  2. 告诉Spring自动扫描加了注解的组件:依赖名称空间进行扫描,默认是单例的

    <context:component-scan base-package="com.runsstudio"></context:component-scan>

  3. 注意需要先添加命名空间

  4. 指定base-package,该包下面的所有注解类自动扫描进IOC容器。

  5. 如果要支持用注解导入组件,一定要导入AOP包(spring-aop-5.2.0.RELEASE),支持注解模式

  6. 从组件中加入的和从包中加入的,行为都是一样的

com.runsstudio 及下面所有加了注解的类都会被扫描

BeanDefinitionStoreException这里可能会包一个错误

1
2
3
4
5
6
7
8
    @Test
public void test01(){
// ID默认就是类名首字母小写
Object bookDao = ioc.getBean("bookDao");
Object bookDao2 = ioc.getBean("bookDao");
Object bookServlet = ioc.getBean("bookServlet");
System.out.println(bookDao==bookDao2);//true
}
1
@Repository("bookDaoheihei") // 指定新的 bookDao名字
1
@Scope("prototype") //指定是多实例的

由于可以用注解快速配置, XMLbean配置的方法适用于配置其他人写的包(无法修改java代码)

16/17 扫描时候只要/排除的组件

1
2
3
<context:exclude-filter type="(排除的规则)" expression=""/>
比如 <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
表示不扫描 Controller

【掌握】

assignalble 全类名

annotation 注解排除

【了解】

aspectJ aspectJ表达式

custom 自定义代码特定决定哪些自己使用

regex 正则表达式

1
<context:component-scan base-package="com.runsstudio" use-default-filters="false">    <context:include-filter type="custom" expression="org.springframework.stereotype.Controller"/></context:component-scan>

注意 使用include的时候要禁用掉默认的规则use-default-filters=”false”

@Autowired @Resource @Inject 都是用来自动装配的,但是第一个最强大

@Autowired Spring

@Resource J2EE,是JDK的标准

@Inject

三个都是JAVA的标准,不过是开发公司不同

Resource 扩展更强:如果切换成另外一个容器框架,Resource还是可以使用的,Autowired 是Spring开发,离开Spring就不能用了

-------------文章已结束~感谢您的阅读-------------
穷且益坚,不堕青云之志。