2017-09-10 8 views
0

私は春のブート、休止状態のアプリケーションとクライアント側のためのアンドロイドアプリケーションを持っています。また、ソケット接続にはjava.net.Socket apiを使用しています。 このようなサーバーソケットを作成する前に、new Server(12346);とすべてが十分でした。しかし、今はソケットクラスからデータベースにアクセスする必要があります。 @Autowired UsersDaoフィールドであるが、もちろんである。なぜなら、SocketクラスはSpring Frameworkによって見えないからである。 したがって、Socketクラスの依存関係注入をポートをコンストラクタ引数として使用してUserDaoをnullにしないでください。コンストラクタ引数を伴うSpring依存性注入

+0

「UserDao」ビーンはどのように作成されますか? 'UserDao' Beanの作成方法を提供できますか?@Component、@Service、@Beanですか? @DanielC。 –

+0

それは '@ Repository'と@ Transactional' – Greich

+0

@DanielCです。 '@Autowired SessionFactory'も含まれています – Greich

答えて

0

静的メソッドからSpring Application Contextにアクセスし、この静的メソッドを使用して、自動配線せずにServerクラスにリポジトリBeanをロードできます。

あなたは以下のクラスを作成する必要があります(hereを見つけた):

ApplicationContextProvider

@Component 
public class ApplicationContextProvider implements ApplicationContextAware { 

    private static ApplicationContext context; 

    public ApplicationContext getApplicationContext() { 
     return context; 
    } 

    @Override 
    public void setApplicationContext(ApplicationContext ctx) { 
     context = ctx; 
    } 
} 

SpringConfigurationあなたの非春はServerクラスを管理

@Configuration 
public class SpringConfiguration { 

    @Bean 
    public static ApplicationContextProvider contextProvider() { 
     return new ApplicationContextProvider(); 
    } 

} 

そして:

public class Server { 
    //your code 

    public void doUsersDaoStuff() { 
     UsersDao usersDao = (UsersDao) SpringConfiguration.contextProvider().getApplicationContext().getBean("UsersDao"); 
     // Do your own stuff with UsersDao here... 
    } 
} 
関連する問題