Java 各级注解及@Autowired注入为null解决办法

  

   1、@controller 控制器

  • 用于标注控制层,相当于struts中的action层。

    2、@service 服务层

  • 用于标注服务层,主要用来进行业务的逻辑处理。

    3、@repository DAO层(Repo层)

  • 用于标注数据访问层,也可以说用于标注数据访问组件,即DAO组件。

    4、@Autowired 注入实例

  • 表示被修饰的类需要注入对象,spring会扫描所有被@Autowired标注的类,然后根据 类型 在ioc容器中找到匹配的类注入。

    5、@Component (把普通pojo实例化到spring容器中,相当于配置文件中的<bean id="" class=""/>

  • 泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),我们就可以使用@Component来标注这个类。

  相对于@Autowired和@Component注解,个人理解实际用法为:

    如在普通类中用到需@Autowired注入实例,则需将普通类使用@Component注解标明,不然使用@Autowired注入的实例为null。

    一般普通类实例直接new即可,而在有上述两个注解的普通类在实例时需要使用@Autowired注入,如果直接使用new实例,则该类中使用@Autowired注入的实例为null。

  实例如下:

  

    在ExcelUtil工具类中需要使用@Autowired注入需用到的实例,则改工具类需用@Component注解标明,在使用该工具类时需要用@Autowired注入实例,如果使用ExcelUtil excelUtil = new ExcelUtil(); new实例,则工具类中注入的实例modelPropdictRepo为null。

猜你喜欢

转载自www.cnblogs.com/Big-Boss/p/10761514.html