我永远不会试图去战胜一个纯傻逼,因为他会用他丰富的经验来打败我...

分类目录
6月 22

springboot中对于@Autowired 注入为null解决办法

1、描述

有时候在某个类用@Autowired 进行注入时,会发现注入参数为null。

发现可能存在的原因:

(1)该类没有托管给spring 管理,一般在类的上面添加@Component

(2)你的这个类有被new出来的实例的,new 过的对象不会交给Spring容器管理 所以里面的 service或者dao注入不进来。MQ注册的时候出现过

2、解决方式

对于

(1)其实就加入@Component 就可以了。接下来讲怎么解决第

(2)种情况有时候你确实需要在这个new 的类去注入某些类,但是用@Autowired 又注入为null,这时候我们需要手动去弄Spring容器中的Bean实现ApplicationContextAware接口。

11月 17

Idea 配置Maven项目发布.

        这次自己新开发的项目, 打算用 Java Web ssm 框架来开发。软件还是Idea,毕竟好用。

        前期的项目配置还是根据,Idea SpringMVC+Spring+MyBatis+Maven整合框架搭建秒杀系统 这篇文章来配置,然后Idea 配置Tomcat 部署

        直接进入正题,打开右上角的 Project Structre  或者使用 Ctrl+Alt+Shift+S 快捷键打开,先设置 Modules,先点绿色的加号,然后往下拉选择 web,然后配置,Web Resource Directories  设置到src/main/webapp 然后点ok,目录下如下图。        

        在然后,去设置 Artifacts,点绿色的加号,选择 Web Application Exploded 选择 From Modules,回弹出一个框,就是你刚刚在 Modules 配置的那个,选择即可 点ok即可。

         

    然后,配置Tomcat服务器,在右上角有一个 绿色的开始按钮,旁边,点击 Edit Configuration,回弹出一个框 。

     在点绿色加号 -> Tomcat Server -> Local  ,然后就是配置 Tomcat 服务器了

   

    第一个 Name:就是你这里显示的服务器名,随便写无所谓。

    Server 标签配置:

            Application serven:这里就要配置了,点击右边的Configure,弹出Application Servers,点击Tomcat Home,也就是你的Tomcat文件,所放置的位置,选择即可,剩下的都会自动加载,然后点ok,Server 剩余标签的内容,都选择默认即可,然后点Apply,下一步切换到 Deployment 配置

     



    Deployment 标签配置:

         主要是配置 Deploy at the server startup , 点击右边的加号,会有一个 Artifact External Source 两个标签,这里我们选择 Artifact  也是我们刚刚在 Project Stuctre  配置的 Artifact 包,直接选择即可,点ok

       

       

    至此,配置就结束了,可以点,右上角的 绿色按钮 或者 小虫子按钮就可以开始服务器了~ 



             如有疑问,欢迎在本博客下面留言,或者放邮件 至(i@ishwy.me), 邮件内说明来源。

11月 03

Idea SpringMVC+Spring+MyBatis+Maven整合框架搭建秒杀系统

因为工作繁忙的问题, 好久没写博客了 🙂

最近项目做完了, 也是闲的没事了,  因为公司另一个部门是使用Java开发的,  一直吹逼说Java比php安全, 效率高, 稳定之类的.  在下, 作为phper 怎么能忍,但是也不能无凭无据的怼。所以,自我学习一下Java看看到底哪里牛逼了。

学习路线  (楼主也只是上学出钱)  -> 

    1. Java的一些语法基础,(因为,有php基础所以基本就简单过了一遍)。

    2. Servlet的一些简单教程。(http请求、表单、cookie)之类的简单教程。

    3. Spring框架的一些理论知识点,主要是IoC和DI的相关知识点、事物管理

    4. SpringMVC框架,主要是看执行流程以及一些注解是使用。

    5. Mybatis框架, 主要是看了一些全局配置的配置和整合spring,在我的理解Mybatis就相当一个数据库链接驱动。

 

 相关知识点看完之后,就打算找一个项目试试手,在网上正好看到一个秒杀系统,正是用ssm的框架进行开发的,所以,在这里正好也记录一下,开发旅程。

     环境和开发工具:windows10 64位  idea 2017.3 。

     框架版本:是基于Maven 最新环境的,如下,  jdk1.8 Tomcat8.0  Spring 3.0  Spring MVC 4.3.7 Mybatis 3.4.2。

先用idea 配置搭建Maven:

    File -> new > Project -> 选择Maven,第二步要勾上之后,才能选择下列的maven-archatype-webapp选择,然后在next   


    GroupId : 就是改项目的名。

    ArtifactId:就是后面要打包的文件名。

    Version: 默认不变。然后后面两部可以一直next,下去,最后在finish

    

     

    然后, 根目录下就会有一个pom.xml文件, 这个文件就是配置Maven 包依赖的文件。为了不让文章显得杂余,我这里使用外链。

    >改项目pom.xml 配置文件,感觉也是基本的ssm的框架配置文件

      https://gitee.com/slgz/seckill/blob/master/pom.xml

        

    Idea 默认好像是不会自动import的,所以这里手动一下pom.xml 文件选择Maven -> Reimport ,时间长短,看自己的网速。等完成之后就会显示如下信息

    当然, ide给我们创建的项目,是缺少文件的。这里,我们在自己手动创建几个文件

    src/main/Java : 这里就是java源代码的文件夹,注意:这里要定义为Resources类型文件

    src/main/resources:这里就是相关的配置文件注意:这里要定义为Resources类型文件

    在一样的新建test的文件夹,

    src/main/Java

    src/main/resources

    接下来就是一些相关的配置顺序流程了,这里就不一一描述了,就说一下流程吧。

    先是配置Mybatis相关文件:

        在src/main/java/org/seckill类下,以下简称(seckill类)。

            以下,统一规定:命名规范就是,首字母大写 , 包中的geter seter toString方法,都可以通过idea的快捷键 Alt+INS 快捷键完成。

            新建entity 实体包,  此包就是定义数据库里对应的字段以及类型,并实现seter geter 方法  toSting方法。

            然后,新建Dao包,  此包就是实现entiry的实现类,定义 sql 方法名,注意,这里只是定义方法名,方法参数,类型。并不具体实现,具体实现后面再说

            

       在src/main/resources下新建spring文件夹,在spring文件夹里新建 spring-dao.xml文件,这里就是为了整合Mybatis过程。

             主要是配置过程:

                    1.   配置数据库相关的参数properties属性,这里就在 resources 目录下直接新增 jdbc.properties  文件,此文件是数据库的链接地址, 以及账号 密码等配置
                    2.   配置数据库连接池,主要还是通过c3p0完成链接。

                    3.   配置SqlSessionFactory对象,这里是关键主要完成的是。链接第二步的连接池,配置mybatis-config.xml 文件, 自动扫描entity包  , 自动扫描sql配置文件包,

                            这里就要在resources下新建mapper文件夹, mapper问价主要完成是具体sql语句的编写,因为mybatis就是通过原生sql来访问的。

                    4.  最后异步就是配置,动态mapper接口包,动态实现mapper接口。


        到这里基本的mybatis整合配置文件,为止。



        接下来配置Service包,在 resouces/spring 下新建spring-service.xml 文件夹, 主要就是配置spring的事务管理器。


        

        最后一部就是配置SpringMVC和spring的整合, 其实SpringMVC和spring是天然一体的, 天生就是在一起的。

        易于项目好维护, resources/spring  下新建 spring-web.xml 文件。

              主要配置:

                    1. 开启SpringMVC注解模式。

                    2. 静态资源默认Servlet配置,如js / css/ image

                    3. 配置jsp显示ViewResolver。

                    4. 一样的,自动扫描web相关的bean。



        至此,ssm框架整合的基本算是完成了。

            以此的顺序是:     Mybatis    ->  Spring   -> SpriongMVC


        


                    

           最后附上已经做完的项目链接:

                    https://gitee.com/slgz/seckill.git 

        

        

2月 06

简短的思路分析

Q:类的属性,都有哪些特性。

其实特性只有一个。通过对象访问符 -> 惯穿类内部所有方法与类外部。用途是在类的方法之间或类内外之间传递数据。其本质是在一定范围内的全局变量。类和它内部的方法,自成天地,内外不互通。除了全局变量,就是属性可以互相传递。
可以在类内部传递,可以当作函数的参数,可以做函数返回值。外部实例化后,可用实例化后的变量调用它,内部可用$this调用。类的属性不可以有计算过程,最好不要用全局变量定义它

Q:几个类似的方法封装成类有什么好处?
做为一种封装手法。其本质依旧是重复利用代码。提供的便利是由于有属性的存在,可以减少或增加要传递的量。
由于方法是同类型的方法。在连续性操作时,使用类可以有效减少量的使用。也不受返回值数量限制。

图形处理的本质。。
在一张底图上重新画。。
画上去的东西,成为底图的一部份。
所以,每一次操作,都是“在一张底图上重新画”
至于底图上原来有什么,那已经不重要了。
从来就不存在什么图片处理。而是重新画。

思考的时候,不能光听“做什么,怎么做”
却总是忽略了:为什么是这样做,为什么一定是这样做。
为什么可以这样做。为什么应该是这样做。
2016-04-01 22:54

2月 06

产品展示 之 添

这次做的一个产品展示的web 程序。
首先思考一下—> 如果平时要自己记录一个东西会怎么做?那笔在纸上写产品的类型 数量 名称 balabala的吧。这是生活中,如果是电脑程序中的呢?
这时候就要把生活中的笔纸使用 电脑中的 数据库。
所以这个时候就要想一下数据库该怎么设计了,想到产品就会想要知道他的名称,产品说明,产品类型,还有存入仓库中的时间。这几个是最基本的。
还有就是要想后面怎么显示的问题。
HTML上显示的图片都是 src=”路径”;而php程序中显示图片是根据本地文件系统显示的,
这里就要判断什么时候怎么显示,相对于谁谁显示。
如果想要在web显示的话就是 HTTP://index.php 这个index.php 里面包含着一张图片,而里面图片显示是根据PHP的文件系统操作如 D:/image/1.jpg
所以想要把图片存到数据库中只需要把图片在文件系统中的位置,存如数据库中如 “../upload/1.jpg”;读取的时候在读到对应的src就好了。
———————————————————————————————————————————————————————————————-
分析到这,下面就是一些实际操作:
第一把要做的就是:连接数据库,选择数据库
然后因为是要做的是添加,如果可以使用INSERT 的语句。
INSERT INTO `表名·(字段名) VALUES (要添加的字段名);
这个时候就要把想修改的内容添加的要添加的字段名即可。
怎么上传呢?
可以使用表单input 的传值 name 威慑为 content leixing 之类的
到这写到数据库基本就完事了。——————————————————————————————————————————————————————- 后面就是如果在页面中显示了。
因为mysql 返回的是资源性的数据格式。。所以必须要先转换成数组的形式。
PHP提供给三种对mysql函数的解析。
mysql_fetch_array mysql_fetch_assoc mysql_fetch_row
三个函数返回的值都是不同的,复杂度由上到下。我一般用第二个
解析出结果之后,如果有多条数据库返回就可以使用while 循环 或者foreach 因为循环的本质就是处理多条数据,
如果只是一条则就可以直接 $array[‘索引’];

到这基本就完事了- – 代码就不上了,唯一还有的问题就是判断文章标题是否相同, 相同就滚蛋。。跟用户注册一样

2016-03-18 15:20

2月 06

产品展示之删

方案一:如果点击删除图片多选框的时候,就执行更新语句。更新原数据库表中的路径为。默认添加的路径,显示的时候直接显示就好了。

方案二:点击删除图片的时候,使原路径为null。显示的时候判断是否为null,如果则显示show字段默认图片,否则显示原图片
2016-03-18 20:04