service利用注解注入,会空指针异常。而用getBean方式则可以获取到service。

spring配置文件如下:

<?xml version="1.0" encoding="UTF-8"?>
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">

<bean id="placeholderProperties"
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <list>
            <value>classpath:conf/config.properties</value>
        </list>
    </property>
    <property name="fileEncoding" value="utf-8" />
</bean>

<import resource="spring-hibernate.xml" />

<!-- Import basic SpringMVC Resteasy integration -->  
<import resource="classpath:springmvc-resteasy.xml" />

<!-- 扫描文件 -->
<context:component-scan base-package="com.sinopec.carlife" />

service接口如下:

package com.sinopec.carlife.service.api;

import java.util.List;

import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import com.sinopec.carlife.model.Region;

@Path("/regions")
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON})
public interface RegionService {

/**
 * 获取所有城市
 * @return
 * @throws Exception
 */
@POST
@Path("/all")
public List<Region> findRegions() throws Exception;

}

service实现类如下:

package com.sinopec.carlife.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.sinopec.carlife.dao.RegionDAO;
import com.sinopec.carlife.model.Region;
import com.sinopec.carlife.service.api.RegionService;

@Service("regionService")
public class RegionServiceImpl implements RegionService {

@Autowired
private RegionDAO regionDAO;

@Override
public List<Region> findRegions() throws Exception {
    return regionDAO.findRegions();
}

}

junit测试如下:

package test.com.sinopec.carlife;

import java.util.List;

import javax.annotation.Resource;

import junit.framework.TestCase;

import org.junit.Test;

import com.sinopec.carlife.model.Region;
import com.sinopec.carlife.service.api.RegionService;

public class RegionServiceTest extends TestCase {

@Resource(name="regionService")
private RegionService regionService;

@Test
public void testFindRegions() {
    try {
        /*ApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring/spring.xml");
        regionService = (RegionService) context.getBean("regionService");*/
        List<Region> regions = regionService.findRegions();
        System.out.println(regions.size());
    } catch (Exception e) {
        e.printStackTrace();
    }
}

}

3个回答

因为你的注解是spring容器解析的,要想让注解能够生效的话是需要spring容器启动的,这就是web项目启动环境下使用的。
你在junit里面测试,要想让Spring容器管理bean完成自动注入的话,可以使用Spring的junit测试工具注解。试试使用如下代码:

 import java.util.List;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.transaction.TransactionConfiguration;
import javax.annotation.Resource;
import junit.framework.TestCase;

import com.sinopec.carlife.model.Region;
import com.sinopec.carlife.service.api.RegionService;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations ={"classpath:spring/spring.xml"})
@Transactional
public class RegionServiceTest extends TestCase {
@Resource(name="regionService")
private RegionService regionService;


@Test
public void testFindRegions() {
    try {
        List<Region> regions = regionService.findRegions();
        System.out.println(regions.size());
    } catch (Exception e) {
        e.printStackTrace();
    }
}

这样就能使用spring自动为junit单元测试自动注入依赖了。

tomcat没启动,怎么加载配置?
用main方法测试,当然只能手动加载啦

你好,你这个问题解决了吗?现在我也遇到这个问题,求指教

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
利用注解注入service,会空指针异常。而用getBean方式则可以获取到service
在整合springmvc和mybatis时,在controller中注入service,无法注入,具体代码如下 @Controller public class ItemsController { @Autowired private ItemsService itemsService; @RequestMapping("/queryItems") public ModelAndView queryItems(){ if (itemsService == null) System.out.println("DDDDDDDDDDDDDDDDDD"); List<ItemsCustom> itemsList = itemsService.findItemsList(null); ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("itemsList", itemsList); modelAndView.setViewName("items/itemsList"); return modelAndView; } } public interface ItemsService { public List<ItemsCustom> findItemsList(ItemsQueryVo itemsQueryVo); } public class ItemsServiceImpl implements ItemsService { @Autowired private ItemsMapperCustom itemsMapperCustom; @Override public List<ItemsCustom> findItemsList(ItemsQueryVo itemsQueryVo){ return itemsMapperCustom.findItemsList(itemsQueryVo); } } spring的配置,已经在这里非注解的配置了service的bean <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd "> <!-- DAO部分 --> <context:property-placeholder location="classpath:db.properties" /> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <property name="maxActive" value="30" /> <property name="maxIdle" value="5" /> </bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="classpath:mybatis/sqlMapConfig.xml" /> </bean> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="ssm.mapper"></property> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /> </bean> <!-- service部分 --> <bean id="itemsService" class="ssm.service.impl.ItemsServiceImpl" /> <!-- <context:component-scan base-package="ssm.service.impl"></context:component-scan> <context:annotation-config /> --> <!-- 事务部分 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="save*" propagation="REQUIRED" /> <tx:method name="insert*" propagation="REQUIRED" /> <tx:method name="delete*" propagation="REQUIRED" /> <tx:method name="update*" propagation="REQUIRED" /> <tx:method name="find*" propagation="SUPPORTS" read-only="true" /> <tx:method name="select*" propagation="SUPPORTS" read-only="true" /> </tx:attributes> </tx:advice> <aop:config> <aop:advisor advice-ref="txAdvice" pointcut="execution(* ssm.service.impl.*.*(..))" /> </aop:config> </beans>
使用getbean是ioc注入吗
如题,使用applicationContext对象的getbean方法获得了对象 这是依赖注入吗? 我只知道,在容器里定义的对象可以互相注入,这是依赖注入。 而main方法使用getbean来获得对象 这算是注入到main方法里吗? 举个例子,有A、B、C三个类 B依赖C 在容器里定义了C类的bean,又定义了B类的bean B的属性里需要C的对象,在容器里将C的bean注入进去 。 A不在容器里,A有main方法使用getbean方法获得B的对象。 从A获得B的对象的方式来看,算是注入吗
spring框架用注解的方式装配属性为什么老是空指针异常
UserDao的实现类UserDaoImp package com.two; import org.springframework.stereotype.Repository; @Repository("userDao") public class UserDaoImp implements UserDao { @Override public void say() { // TODO Auto-generated method stub System.out.println("dao say hello spring"); } } UserService 的实现类UserServiceImp package com.two; import javax.annotation.Resource; import org.springframework.stereotype.Service; @Service ("userService") public class UserServiceImp implements UserService { @Resource(name="userDao") public UserDao userDao; public void say() { this.userDao.say(); // TODO Auto-generated method stub System.out.println("service say hello spring"); } } bean.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd"> <bean id="userDao" class="com.two.UserDaoImp"/> <bean id="userService" class="com.two.UserServiceImp"/> </beans> 测试类Test package com.two; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Test { public static void main(String[] args) { String xmlPath="com/two/bean.xml"; // TODO Auto-generated method stub ApplicationContext applicationcontext= new ClassPathXmlApplicationContext(xmlPath); UserServiceImp userdao=(UserServiceImp) applicationcontext.getBean("userService"); userdao.say(); } } 错误提示 Exception in thread "main" java.lang.NullPointerException at com.two.UserServiceImp.say(UserServiceImp.java:13) at com.two.Test.main(Test.java:14)
contorller中 中用注解调用ServiceImpl层异常,求前辈指点
我在contorller类中用注解的方式实现Service就会报错 ![图片说明](https://img-ask.csdn.net/upload/202001/16/1579141617_121594.png) 报错内容如下 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private supermarket.service.UserServiceSuper supermarket.controller.UserController.userService; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [supermarket.service.UserServiceSuper] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true), @org.springframework.beans.factory.annotation.Qualifier(value=userServiceMark)} <br/><br/> **但是我若是用context去取userService就正常运行,UserServiceSuper userService=(UserServiceSuper)context.getBean("userServiceMark");** 就是用注解就不行,我查了 网上说是@Autowired的错误,但我找不出来. 恳求前辈指点一下呀 感谢<BR/> 问题关键就是controller层无法通过注解调用 <br/><br/> ![图片说明](https://img-ask.csdn.net/upload/202001/16/1579141900_544612.png)<br/><br/> ![图片说明](https://img-ask.csdn.net/upload/202001/16/1579141908_230781.png)<br/><br/> ![图片说明](https://img-ask.csdn.net/upload/202001/16/1579141915_387319.png)<br/><br/> ![图片说明](https://img-ask.csdn.net/upload/202001/16/1579141921_582232.png)
sping3+hibernate4中sessionFactory注解注入为null
sessionFactory 注解注入时为null @Resource(name="sessionFactory") private static SessionFactory sessionFactory; 但SessionFactory sf =(SessionFactory)context.getBean("sessionFactory") 可以得到 两天了一直找不出原因,请大家帮帮忙
Spring aop 为什么注解方式获取的并无法进入?Autowired getBean
请问下我配置的AOP写日志 为什么private static ApprovalService approvalService = SpringContextHolder.getBean("approvalService"); 这样获取bean就可以进入切面, @Autowired private ApprovalService approvalService; 用注解就不行呢?
spring 麻烦大家帮我看看下面的问题
在含有@PostConstruct注解的方法中调用getBean方法会报空指针异常,请问这怎么解决?原因呢?求指教
spring注入jdbcTemplate时一直为空指针,求大牛指导
已经在spring配置文件中配置了jdbcTemplate的bean,但是在测试类中jdbcTemlpate的注入报空指针 ``` <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd "> <!-- 配置spring的jdbcTemplate--> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource"></property> </bean> <!-- 设置spring扫包路径 --> <context:component-scan base-package="com.hzbckj.spring" /> <!-- 导入资源文件 --> <context:property-placeholder location="db.properties" /> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="user" value="${user}"></property> <property name="password" value="${password}"></property> <property name="jdbcUrl" value="${jdbcUrl}"></property> <property name="driverClass" value="${driverClass}"></property> </bean> </beans> ``` 这是spring配置文件 ``` package com.hzbckj.spring.test; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Component; import javax.annotation.Resource; /** * Created by jackson on 2017/2/6. */ @Component public class dataSourceTest { @Resource(name = "jdbcTemplate") private JdbcTemplate jdbcTemplate; public JdbcTemplate getJdbcTemplate() { return jdbcTemplate; } public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } @Test public void testJdbc(){ // ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); // JdbcTemplate jdbcTemplate = (JdbcTemplate)ctx.getBean("jdbcTemplate"); String sql = "INSERT INTO user(name, balance) values('Jonn', 200)"; jdbcTemplate.execute(sql); } } ``` 这是使用的地方 执行时jdbcTemplate一直报空
Spring框架中的Autowired注解,默认真的是按照ByType方式实现自动注入的吗?
在学习spring IOC的过程中,接触到@Autowired注解,资料上都是说默认是按照Bytype类型实现自动注入,但我的实际操作却发现是:先使用ByName,如果失败,再使用ByType。贴代码,求指点: Student类: ``` @Component public class Student { @Value("12") int age; @Value("lisa") String name; @Autowired School school; public Student(){} public Student(int age, String name, School school) { this.age = age; this.name = name; this.school = school; } @Override public String toString() { return "Student{" + "age=" + age + ", name='" + name + '\'' + ", school=" + school + '}'; } } ``` School类: ``` public class School { String name; String address; public School() { } public School(String name, String address) { this.name = name; this.address = address; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } ``` xml文件 ``` <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!--配置注解扫描器,base-package表示注解所在的包,目的是告诉spring框架去扫描指定包的注解--> <context:component-scan base-package="com.aipande.bao1"/> <bean id="school" class="com.aipande.bao1.School"> <property name="name" value="武汉大学21"/> </bean> <bean id="school03" class="com.aipande.bao1.School"> <property name="name" value="武汉大学21"/> </bean> <bean id="school02" class="com.aipande.bao1.School"> <property name="name" value="武汉大学"/> </bean> </beans> ``` 测试类: ``` public class AppTest01 { public static void main(String[] args) { /* * 创建spring容器对象 * spring框架在加载xml文件并创建spring容器对象的同时, * 就会将xml文件中配置的bean对象(作用域为singleton)一同创建,并将这些对象放置在spring容器中。 * */ String config = "applicationContext.xml"; ApplicationContext ctx = new ClassPathXmlApplicationContext(config); //使用getBean()方法获取bean对象 Student stu = (Student) ctx.getBean("student"); System.out.println(stu); } } ``` 结果输出: ``` Student{age=12, name='lisa', school=School{name='武汉大学21', address='null'}} ``` 问题: 如果按照Bytype方式获取bean对象,那上面就应该报错啊,因为sprig容器中存在多个同源bean对象,但是没有报错,说明是按照byName的方式注入。后来我将xml文件中id为school的bean对象删除,就出现了错误提示,说明此时是按照byType的方式注入。因此我有上面的疑问,求解
java关于hibernate和spring整合,在action层无法注入,报空指针错误。
以下为spring配置部分代码 ``` <bean id="testAction" class="com.sven.action.TestAction"> <property name="memberService"> <ref bean="memberService"/> </property> </bean> <bean id="memberService" class="com.sven.service.impl.SwMemberServiceImpl"> <property name="memberDao"> <ref bean="memberDao"/> </property> </bean> <bean id="memberDao" class="com.sven.dao.impl.SwMemberDaoImpl"> <property name="sessionFactory"> <ref bean="sessionFactory" /> </property> </bean> ``` 目录结构如下: ![目录结构](https://img-ask.csdn.net/upload/201708/09/1502281879_661840.png) 经过测试service和dao层注入没有问题。 在action类中,出现错误,代码如下: ``` package com.sven.action; import org.junit.Test; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.core.io.ClassPathResource; import com.sven.entity.SwMember; import com.sven.service.SwMemberService; public class TestAction{ /** * 注入业务层 */ private SwMemberService memberService; public void setMemberService(SwMemberService memberService) { this.memberService = memberService; } @Test public void testAction() { SwMember member = this.memberService.findMemberById(19); System.out.println(member.getUsername() + " "+member.getName()); } // @Test public void test() { XmlBeanFactory factory = new XmlBeanFactory(new ClassPathResource("applicationContext.xml")); SwMemberService dao = (SwMemberService) factory.getBean("memberService"); SwMember member = dao.findMemberById(19); System.out.println(member.getUsername() + " "+member.getName()); } } ``` 运行test方法可以成功,获取到数据; 运行testAction方法报错:报错如下: ![报错](https://img-ask.csdn.net/upload/201708/09/1502282015_361210.png) 小白一枚,望大神指点!
spring setter注入时报空指针错误的问题,希望高手路过看一下
报错信息 [code="java"] java.lang.NullPointerException at com.dareway.apps.demo.test.TestController.save(TestController.java:52) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at com.dareway.apps.common.webcontroller.MultiActionController.invokeNamedMethod(MultiActionController.java:456) at com.dareway.apps.common.webcontroller.MultiActionController.handleRequestInternal(MultiActionController.java:375) at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153) at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:857) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:792) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:475) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:440) at javax.servlet.http.HttpServlet.service(HttpServlet.java:709) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) at com.dareway.apps.common.webcontroller.SafetyFilter.doFilter(SafetyFilter.java:114) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) at com.dareway.apps.common.webcontroller.EncodingFilter.doFilter(EncodingFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929) at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705) at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683) at java.lang.Thread.run(Thread.java:595) [/code] web.xml中的配置 [code="java"] .... <listener> <listener-class> org.springframework.web.context.request.RequestContextListener </listener-class> </listener> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> .... [/code] applicationContext.xml中的配置: [code="java"] .... <!-- 测试接口的配置 --> <bean id="testDemo" class="com.dareway.apps.demo.test.TestDemo"> </bean> <bean id="TestController" class="com.dareway.apps.demo.test.TestController"> <property name="testDemo"> <ref bean="testDemo" /> </property> </bean> .... [/code] TestDemo.java的内容: [code="java"] public class TestDemo implements TestInterface { public void printDemo() { System.out.print("测试成功"); } } [/code] TestInterface 的内容: [code="java"] public interface TestInterface { public void printDemo(); } [/code] testController中的内容: [code="java"] public class TestController extends BizDispatchControler { private TestInterface testDemo; public ModelAndView save(HttpServletRequest request, HttpServletResponse response, TestDTO dto) throws Exception { ... // WebApplicationContext applicationContext = WebApplicationContextUtils // .getWebApplicationContext(request.getSession().getServletContext()); // TestDemo testDemo=(TestDemo) applicationContext.getBean("testDemo");//这样我就可以 // 得到非空的testdemo。但是这不是setter注入吧? testDemo.printDemo();//报空指针的地方 ... return null; } public void setTestDemo(TestInterface testDemo) { this.testDemo = testDemo; } } [/code] 不知道这样配置到底是那个地方出了问题? [b]问题补充:[/b] [code="java"] package com.dareway.apps.demo.test; import java.util.Collection; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; import org.springframework.web.servlet.ModelAndView; import com.dareway.apps.common.ClassHelper; import com.dareway.apps.common.exception.ApplicationException; import com.dareway.apps.common.log.BizLogHandler; import com.dareway.apps.common.pub.util.DataObject; import com.dareway.apps.common.pub.util.DataStore; import com.dareway.apps.common.webcontroller.BizDispatchControler; import com.dareway.apps.common.webcontroller.Delegator; public class TestController extends BizDispatchControler { private TestInterface testDemo; public ModelAndView enterTest(HttpServletRequest request, HttpServletResponse response, TestDTO dto) throws Exception { return new ModelAndView("test"); } public ModelAndView query(HttpServletRequest request, HttpServletResponse response, TestDTO dto) throws Exception { DataObject pdo = new DataObject(); DataStore vds = null; try { pdo.put("dto", dto); Delegator dele = new Delegator(); DataObject result = dele.execute( "com.dareway.apps.demo.test.TestBPO", "query", pdo, getUser(request));// 用自己的bpo以及方法。 vds = (DataStore) result.get("vds"); } catch (ApplicationException e) { BizLogHandler.saveBizLog(request, e.getMessage()); return this.showErrorMessage(e.getMessage()); } return this.flashDataWindow(request, vds); } public ModelAndView save(HttpServletRequest request, HttpServletResponse response, TestDTO dto) throws Exception { DataObject pdo = new DataObject(); // WebApplicationContext applicationContext = WebApplicationContextUtils // .getWebApplicationContext(request.getSession().getServletContext()); //TestDemo testDemo=(TestDemo) applicationContext.getBean("testDemo"); testDemo.printDemo(); // try { Collection entities = ClassHelper.getEntities(request,TestDTO.class,"testdatawindow3"); pdo.put("dto", dto); pdo.put("entities", entities); Delegator dele = new Delegator(); return alertSuccessMessage("保存补贴成功。"); } // public TestInterface getTestDemo() { // return testDemo; // } // public void setTestDemo(TestInterface testDemo) { this.testDemo = testDemo; } } [/code] 这是测试程序的源程序,我做了删改,所以行数可能不对。 我的问题是为什么注入不了。 报的问题就是testDemo=null [b]问题补充:[/b] [code="java"] <bean id="testDemo" class="com.dareway.apps.demo.test.TestDemo"> </bean> <bean id="TestController" class="com.dareway.apps.demo.test.TestController"> <property name="testDemo"> <ref bean="testDemo" /> </property> </bean> [/code] 这个是正确的,如果不正确的 在tomcat启动的应该就报错吧? 楼下的让我改成 <bean id="testDemo" class="com.dareway.apps.demo.test.TestInterface"> TestInterface是个接口 这样不对吧? [b]问题补充:[/b] 你的controller不是由spring创建的。。。 它继承的是MultiActionController 这样不行吗?
使用Spring在Service中注入了Dao的对象,在Service中怎么获取Dao的对象
使用Spring在Service中注入了Dao的对象,然后在Service中需要使用Dao对象的话,可以用ApplicationContext的getBean方法,我这边看的一个程序没有用ApplicationContext,而是在Service中对Dao对象进行了声明,然后定义了Dao对象的set和get方法,这样也可以吗,还是说这个程序我没有看明白,希望有明白的可以给解释一下,另希望有大神可以带带,或者有正在学java的一块做个伴,多交流交流
注解注入的bean和从上下文取出的bean不是同一个?
有以下代码,最后比较注入的dao和ApplicationContext 上下文取出的dao,不是同一个。是我哪里有错误吗? public class SpringApplicationContext implements ApplicationContextAware { private static ApplicationContext applicationContext; @Override public void setApplicationContext(ApplicationContext context) throws BeansException { applicationContext = context; } public static Object getBean(String name) { return applicationContext.getBean(name); } public static ApplicationContext getApplicationContext(){ return applicationContext; } } ``` @Repository(value="helloDao") public class HelloDao { public void save(){ System.out.println("HelloDao.save"); } } ``` @Service("helloService") public class HelloService { @Resource(name = "helloDao") private HelloDao dao; public void say() { System.out.println(SpringApplicationContext.getBean("helloDao")==dao);//false System.out.println("say hello"); } }
Springmvc在线程池中无法使用Service
问题:我在项目中使用线程池新建了线程列队,controller请求后把耗时任务交给列队处理, 列队中需要service注入,但是在Test中测,子线程无法使用service的方法,代码如下: TaskQueueHandler.java ``` public interface TaskQueueHandler { String getTaskName(); int doInvoke(); } ``` TaskSerialQueueService.java ... ``` @PostConstruct public void init(){ serviceThreadStatus=service.submit(new Thread(new Runnable() { @Override public void run() { while (running){ try{ TaskQueueHandler taskQueueHandler= tasks.take(); if(taskQueueHandler!=null){ try{ taskQueueHandler.doInvoke(); }catch (Exception e){ log.error(taskQueueHandler.getTaskName()+" doInvoke Error!",e.getCause()); } } }catch (InterruptedException e){ running=false; } } } })); } /** * 往列队中添加新任务 * @param taskQueueHandler * @return */ public synchronized boolean addTask(TaskQueueHandler taskQueueHandler){ if(!checkServiceIsActive()){ activeService(); } boolean success= tasks.offer(taskQueueHandler); if(!success){ log.warn(taskQueueHandler.getTaskName()+"任务列队添加失败!"); } return success; } ``` ... WxPayNotifyTask.java ``` public class WxPayNotifyTask implements TaskQueueHandler{ private String orderNo; public WxPayNotifyTask(String mOrderNo){ this.orderNo=mOrderNo; } @Override public String getTaskName() { return WxPayNotifyTask.class.getSimpleName(); } private OrderService orderService; @Override public int doInvoke() { System.out.println("orderNo="+orderNo); orderService= (OrderService)SpringUtils.getBean("orderService"); try{ OrderBean orderBean=orderService.queryByOrderNo(orderNo); System.out.println(orderBean.toString()); }catch (Exception e){ e.printStackTrace(); } return 0; } } ``` 测试代码中调用 ``` @Autowired private TaskSerialQueueService taskQueueService; taskQueueService.addTask(new WxPayNotifyTask("379991638464417792")); ``` 测试发现报错信息如下 ``` org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is java.sql.SQLException: interrupt at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:289) at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:377) at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:461) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:277) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:673) at com.superior.chalk.service.order.OrderServiceImpl$$EnhancerBySpringCGLIB$$d45a5b10.queryByOrderNo(<generated>) at com.superior.chalk.task.WxPayNotifyTask.doInvoke(WxPayNotifyTask.java:27) at com.superior.chalk.task.queue.TaskSerialQueueService$1.run(TaskSerialQueueService.java:35) at java.lang.Thread.run(Thread.java:745) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: java.sql.SQLException: interrupt ``` 最后发现如直接在test中使用 new WxPayNotifyTask("379991638464417792").invoke()是可以使用service的,但是在子线程中能获取到service但调用service的方法就报错。 先谢谢各位大佬帮忙分析分析!
注入的@Service对象怎么获取?
请问通过@Service方式注入的类,怎么可以获取到? eg.要获取名为companyCommand对象 在action中可以通过以下方式获取: ServletContextservletContext = request.getSession().getServletContext(); ApplicationContext ctx = WebApplicationContextUtils .getWebApplicationContext(servletContext); CompanyCommandum = (CompanyCommand) ctx.getBean("companyCommand"); 在 @Service("companyCommand") public class CompanyCommand() { @Resource private WyBaseCommand baseCommand; } 中怎么可以获取到注入的companyCommand对象?
ssh整合getHibernateTemplate().find()报空指针异常
[color=darkred][/color] applicationContext.xml文件: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"> </property> <property name="url" value="jdbc:microsoft:sqlserver://localhost:1433;databasename=zf"> </property> <property name="username" value="sa"></property> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"> <ref bean="dataSource" /> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.SQLServerDialect </prop> <prop key="hibernate.show_sql"> true </prop> </props> </property> <property name="mappingResources"> <list> <value>com/chen/model/TblFwlx.hbm.xml</value> <value>com/chen/model/TblFwxx.hbm.xml</value> <value>com/chen/model/TblJd.hbm.xml</value> <value>com/chen/model/TblQx.hbm.xml</value> <value>com/chen/model/TblUser.hbm.xml</value></list> </property></bean> <bean name="FwxxDao" class="com.cao.dao.FwxxDao"/> <bean name="LoginDao" class="com.cao.dao.LoginDao"/> </beans> applicationcontext-aop.xml代码: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd" default-autowire="byName" default-lazy-init="true"> <!-- 以AspectJ方式 定义 AOP --> <aop:config proxy-target-class="true"> <aop:advisor pointcut="execution(* com.cao.dao.*Dao.*(..))" advice-ref="txAdvice" /> </aop:config> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="get*" propagation="REQUIRED" read-only="true"/> <tx:method name="update*" propagation="REQUIRED" /> <tx:method name="add*" propagation="REQUIRED"/> <tx:method name="*" propagation="REQUIRED" read-only="true"/> </tx:attributes> </tx:advice> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory" /> </bean> </beans> FwxxAction代码: public class FwxxAction extends DispatchAction { private FwxxDao fwxxDao; public FwxxDao getFwxxDao() { return fwxxDao; } public void setFwxxDao(FwxxDao fwxxDao) { this.fwxxDao = fwxxDao; } @Override protected ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { return doList(mapping, form, request, response); } public ActionForward doList(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { System.out.println("in..........doList"); System.out.println("fwxxDao======="+fwxxDao); int index=1; int pageSize=5; try{ String str=request.getParameter("index"); index=Integer.parseInt(str); }catch(Exception e){ } List list=fwxxDao.getAll(); request.setAttribute("list", list); return mapping.findForward("fwxxList"); } } Dao代码: package com.cao.dao; import java.util.List; import com.cao.model.tblFwxx; public class FwxxDao extends BaseDao<tblFwxx> { public FwxxDao() { super.cls=tblFwxx.class; } public List getFwxx(){ return super.getAll(); } } BaseDao代码: public class BaseDao<T> extends HibernateDaoSupport { protected Class cls; public List<T> getAll(){ return getHibernateTemplate().findByExample(cls); } } struts-config.xml: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"> <struts-config> <data-sources /> <form-beans > <form-bean name="fwxxForm" type="com.cao.struts.form.FwxxForm" /> </form-beans> <global-exceptions /> <global-forwards ></global-forwards> <action-mappings > <action attribute="fwxxForm" name="fwxxForm" parameter="method" path="/fwxx" scope="request" type="com.cao.struts.action.FwxxAction" > <forward name="fwxxList" path="/WEB-INF/jsp/FwxxList.jsp"></forward> </action> </action-mappings> <controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"/> <message-resources parameter="com.chen.struts.ApplicationResources" /> <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn"/> </struts-config> action-servlet.xml代码: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd" default-autowire="byName"> <bean name="/fwxx" class="com.cao.struts.action.FwxxAction"/> </beans> web.xml代码: <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext-*.xml</param-value> </context-param> <!-- 著名 Character Encoding filter --> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <!--Hibernate Open Session in View Filter控制Session的连接--> <filter> <filter-name>hibernateFilter</filter-name> <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>*.do</url-pattern> </filter-mapping> <filter-mapping> <filter-name>hibernateFilter</filter-name> <url-pattern>*.do</url-pattern> </filter-mapping> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> <init-param> <param-name>debug</param-name> <param-value>3</param-value> </init-param> <init-param> <param-name>detail</param-name> <param-value>3</param-value> </init-param> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app> 最后运行,getHibernateTemplate()为空,调用它的find方法抛空指针异常 用ApplicationContext con=new ClassPathXmlApplicationContext("applicationContext-*.xml"); con.getBean("FwxxDao"); 可以得到对象并可以调它的方法
context.getBean("PrivateItf.class")这个具体要怎么理解
有一接口 ``` public interface PrivateItf{ void sendMessage(String Message); } ``` 有一实现类 ``` public class PrivateImpl implements PrivateItf{ void sendMessage(String Message); } ``` 在springBeans.xml中用了 ``` <bean class="com.test.PrivateImpl"/> ``` 取配置文件调用方法 ``` lassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("META-INF/springBeans.xml"); PrivateItf privateImpl = context.getBean("PrivateItf.class"); privateImpl.sendMessage("test"); ``` 想向各位大佬请教一下,在获取配置 context.getBean的时候getBean里面参数是接口类,然后我xml中只配置了一个实现类bean,这个是怎么获取的 以前只学过getBean(String beanId)的形式获取,如果我有很多个PrivateImpl1,PrivateImpl2,PrivateImpl3....实现了PrivateItf这个接口,那取到的这个privateImpl到底是取那个具体的实现类呢?
spring ctx.getBean()问题
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); HService h = (HService) ctx.getBean("service"); 在myeclipse中执行单步调试 ,在运行到 ctx.getBean("service"); 这件按 f6 进入到AbstractApplicationContext 类 的 protected void destroyBeans() { getBeanFactory().destroySingletons(); } 中 方法 。。 求解 为什么进入的是destroyBeans方法,而不是getBean方法???
new的对象中获取spring中的bean类报applicationContext为null
我是使用实现ApplicationContextAware接口封装一个工具类来初始化一个applicationContext来使用的,项目启动是也看到初始化成功了,applicationContext是有值的,但在new的对象中使用时却报null?不知道为什么,请大神指点,下面是代码实现: ```@Component public class BeanContext implements ApplicationContextAware { private static ApplicationContext applicationContext; public static ApplicationContext getApplicationContext(){ return applicationContext; } @SuppressWarnings("unchecked") public static <T> T getBean(String name) throws BeansException { return (T)applicationContext.getBean(name); } public static <T> T getBean(Class<T> clz) throws BeansException { return applicationContext.getBean(clz); } @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { BeanContext.applicationContext = applicationContext; } } ``` public class SyncDataTask extends AbstractTask { private SyncDataParameters syncDataParameters; private Job job; private DataSource dataSource; private BaseDataSource baseDataSource; /** * task dir */ private String taskDir; private ShellCommandExecutor shellCommandExecutor; /** * process database access */ private ProcessDao processDao; private DataxJsonUtil dataxUtil = BeanContext.getBean(DataxJsonUtil.class); } ``` beanContext类上是有component注解的,syncDataTask是普通的类,没有交给spring管理,DataxJsonUtil是spring管理的类
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
前端 | 2. 正则
转载请注明以下: 本文转自清自以敬的博客:https://blog.csdn.net/qq_45791147 文章目录1.转义2.正则表达式初步2.1.匹配字符2.1.1.组成元素2.1.2.基础正则的设计 1.转义 转义的作用: 当某个字符在表达式中具有特殊含义,例如字符串引号中出现了引号,为了可以使用这些字符本身,而不是使用其在表达式中的特殊含义,则需要通过转义符“\”来构建该字符转义...
有哪些让程序员受益终生的建议
从业五年多,辗转两个大厂,出过书,创过业,从技术小白成长为基层管理,联合几个业内大牛回答下这个问题,希望能帮到大家,记得帮我点赞哦。 敲黑板!!!读了这篇文章,你将知道如何才能进大厂,如何实现财务自由,如何在工作中游刃有余,这篇文章很长,但绝对是精品,记得帮我点赞哦!!!! 一腔肺腑之言,能看进去多少,就看你自己了!!! 目录: 在校生篇: 为什么要尽量进大厂? 如何选择语言及方...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 free -m 其中:m表示兆,也可以用g,注意都要小写 Men:表示物理内存统计 total:表示物理内存总数(total=used+free) use...
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发...
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 演示地点演示 html代码如下` music 这个年纪 七月的风 音乐 ` 然后就是css`*{ margin: 0; padding: 0; text-decoration: none; list-...
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。
数据库优化 - SQL优化
以实际SQL入手,带你一步一步走上SQL优化之路!
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 cpp 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7 p...
通俗易懂地给女朋友讲:线程池的内部原理
餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小型人工智障。 知识可以运用在不同地方,不一定非是天气预报。
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹...
面试官:你连RESTful都不知道我怎么敢要你?
干货,2019 RESTful最贱实践
Docker 从入门到掉坑
Docker 介绍 简单的对docker进行介绍,可以把它理解为一个应用程序执行的容器。但是docker本身和虚拟机还是有较为明显的出入的。我大致归纳了一下,可以总结为以下几点: docker自身也有着很多的优点,关于它的优点,可以总结为以下几项: 安装docker 从 2017 年 3 月开始 docker 在原来的基础上分为两个分支版本: Docker CE 和 Doc...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看...
白话阿里巴巴Java开发手册高级篇
不久前,阿里巴巴发布了《阿里巴巴Java开发手册》,总结了阿里巴巴内部实际项目开发过程中开发人员应该遵守的研发流程规范,这些流程规范在一定程度上能够保证最终的项目交付质量,通过在时间中总结模式,并推广给广大开发人员,来避免研发人员在实践中容易犯的错误,确保最终在大规模协作的项目中达成既定目标。 无独有偶,笔者去年在公司里负责升级和制定研发流程、设计模板、设计标准、代码标准等规范,并在实际工作中进行...
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
Nginx 原理和架构
Nginx 是一个免费的,开源的,高性能的 HTTP 服务器和反向代理,以及 IMAP / POP3 代理服务器。Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。 Nginx 的整体架构 Nginx 里有一个 master 进程和多个 worker 进程。master 进程并不处理网络请求,主要负责调度工作进程:加载配置、启动工作进程及非停升级。worker 进程负责处...
Python 编程开发 实用经验和技巧
Python是一门很灵活的语言,也有很多实用的方法,有时候实现一个功能可以用多种方法实现,我这里总结了一些常用的方法和技巧,包括小数保留指定位小数、判断变量的数据类型、类方法@classmethod、制表符中文对齐、遍历字典、datetime.timedelta的使用等,会持续更新......
YouTube排名第一的励志英文演讲《Dream(梦想)》
Idon’t know what that dream is that you have, I don't care how disappointing it might have been as you've been working toward that dream,but that dream that you’re holding in your mind, that it’s po...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员...
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC...
相关热词 c#委托 逆变与协变 c#新建一个项目 c#获取dll文件路径 c#子窗体调用主窗体事件 c# 拷贝目录 c# 调用cef 网页填表c#源代码 c#部署端口监听项目、 c#接口中的属性使用方法 c# 昨天
立即提问