zoukankan      html  css  js  c++  java
  • java

    https://www.cnblogs.com/clamp7724/p/11757304.html

    之前做的ssm结构的小练习,结合这个看比较好。

    1.

    @Controller

    控制器, 添加给controller(servlet)层

    2.

    @Service

    服务,添加给service(业务逻辑)层

    3.

    @Repository

    储存库,添加给数据库(持久化,dao)层

    4.

    @Component

    组件,给其他(不属于以上3种)的层

    spring配置文件中,加入

    <!-- 配置spring创建容器时要扫描的包,扫描注解, base-package的值是需要扫描的包名 -->
        <context:component-scan base-package="com.itheima">
    
        </context:component-scan>

    spring在启动时会扫描src下,com.itheima包中有以上注解的类,然后代理类,加入到ioc容器中(4种注解乱加也都可以生成bean使用,但是为了可读性所以最好对应加)。

    生成的bean的id(类的对象的变量名)是类名首字母小写。

    单例模式。

    注解后面可以跟参数,类型是String,自定义bean的id e.g. @Controller("aaa")

    5.

    @scope(value = "prototype")

    class上面加上这个注解,表示这个class生成多实例。

    6.

    spring配置文件中:

    可以在context:component-scan中添加额外条件

    <!-- 配置spring创建容器时要扫描的包,扫描注解, base-package的值是需要扫描的包名 -->
    <context:component-scan base-package="com.itheima">
            <!--制定扫包规则,扫描@Server注解的JAVA类 -->
            <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Server" />
    
            <!--制定扫包规则,不扫描@Controller注解的JAVA类,其他的还是要扫描 -->
            <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />
    </context:component-scan>

    type = annotation  按照注解注解筛选

    type = assignable  按照类名筛选

    7.

    @autowired

    自动注入 (也叫依赖注入,自动装配等,其实就是自动赋值 - -,spring的主要功能之一)

    通过反射生调用到get,set方法,自动生成对象然后赋值。

        @Autowired   //自动注入,取到spring创建的代理对象,对业务层进行操作。 spring的ioc容器会先匹配类型,
    //如果有多个(继承),匹配变量名是不是类名的小写,所以这里最好规范写。
    //如果ioc中有多个AccountService类型的bean,同时名字也匹配不到,会直接报错。
    private AccountService accountService; @RequestMapping("findAll") public ModelAndView findAll(){ ModelAndView mav = new ModelAndView(); mav.setViewName("findAllAccount"); List<Account> accountList = accountService.findAll(); mav.addObject("accountList", accountList); return mav; }

    @autowired(required  = false)

    找不到直接赋值null,不会报错了- - 不过一般不会这么干。。。编译没错误,但是业务逻辑错误了

    8.

    qualifier("指定的变量名")    

        @Autowired   //自动注入,取到spring创建的代理对象,对业务层进行操作。 spring的ioc容器会先匹配类型,
    @Qualifier("accountService") //加上这个可以指定在ioc中对应的bean, 下面的变量名可以随便写了- -不过基本不会这么干
    private AccountService accountServiceExt;

    9.

    @Resource

    也可以用来自动装配,不过是javaEE中自带的,autowired是spring框架中提供的,功能更强大(比如autowired可以设置required = false来默认是null,Resource中没有这个参数)

    但是因为是java自带,属于标准注解,扩展性和兼容性更好(不依赖于spring框架)。

  • 相关阅读:
    python学习之模块(pip),列表生成式,模块操作mysql,excel
    python学习之非空即为真,函数,集合,解包与打包
    配置虚拟机和网络配置
    python学习之文件读写,序列化(json,pickle,shelve)
    python学习之列表,元祖,字典
    盒子内部文字超出不换行
    织梦dedecms文章发布日期时间调用标签大全
    贝塞尔曲线值
    CSS解决border影响元素宽高的问题(box-sizing属性)
    pc建站自适应
  • 原文地址:https://www.cnblogs.com/clamp7724/p/11919319.html
Copyright © 2011-2022 走看看