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框架)。

  • 相关阅读:
    SuSe Linux 10 企业服务器搭建双机集群配置实例
    升级你的Linux日志系统
    企业部署Linux应用将拥有更低的TCO
    用VXE保护Linux系统安全
    Leetcode-995 Minimum Number of K Consecutive Bit Flips(K 连续位的最小翻转次数)
    Leetcode-994 Rotting Oranges(腐烂的橘子)
    Leetcode-993 Cousins in Binary Tree(二叉树的堂兄弟节点)
    Leetcode-552 Student Attendance Record II(学生出勤记录 II)
    Leetcode-213 House Robber II(打家劫舍 II)
    Leetcode-312 Burst Balloons(戳气球)
  • 原文地址:https://www.cnblogs.com/clamp7724/p/11919319.html
Copyright © 2011-2022 走看看